「ATSプログラミング入門」読書会@名古屋 第0回 議事録

「ATSプログラミング入門」読書会@名古屋 第0回 https://fpiot.doorkeeper.jp/events/24141 の議事録です
1
おしいれのぼうけん @osiire

再帰関数を作る時はfunキーワードで関数を作る。fnと区別できる。誰もfn使ってないらしい。ヾ(ーー )ォィ #ats #nagoya

2015-05-24 15:41:18
おしいれのぼうけん @osiire

説明の都合上(配列の説明をまだしていないので)エイト・クイーンパズルの章のプログラムはタプルを使っている。(配列は依存型の話と絡むので) #ats #nagoya

2015-05-24 15:59:23
おしいれのぼうけん @osiire

相互再帰関数が使える。fun .. and .. #ats #nagoya

2015-05-24 16:16:43
おしいれのぼうけん @osiire

相互再帰をローカルジャンプにコンパイルしたい場合は、fnx .. and .. を使う。(そんな機能あったのか・・・(゚o゚) #ats #nagoya

2015-05-24 16:20:03
おしいれのぼうけん @osiire

関数の型アノーテーションに:<cloref1>と書くとそれはクロージャーになる。ATSではクロージャーあまり使わない。(スタックとかテンプレートとか別の手法があるから) #ats #nagoya

2015-05-24 16:32:49
おしいれのぼうけん @osiire

クロージャー指定を明示的にしない場合、環境の変数を自動的に引数に追加して一見クロージャーのような関数内関数をメモリアロケーションなしで書ける(場合もある)。 #ats #nagoya

2015-05-24 16:35:39
I moved to Mastodon. @masterq_mogumog

rtfind を多項式の関数 lam x => x * x - x + 110 に呼び出すと 11 が返ります。 #ウソダ #ats #nagoya

2015-05-24 16:42:05
おしいれのぼうけん @osiire

「lam x => x * x - x - 110の間違いですね。」 #ats #nagoya

2015-05-24 16:43:34
おしいれのぼうけん @osiire

g0i2uはintからunsigned intへのキャスト。 普通はstaload UN = "prelude/SATS/unsafe.stats"として$UN.cast{uint}と書くのが便利。 #ats #nagoya

2015-05-24 16:55:35
おしいれのぼうけん @osiire

カリー化された関数も作れる。作れるけど、C言語にマップする関係でパフォーマンス的に不利。 #ats #nagoya

2015-05-24 17:03:14
おしいれのぼうけん @osiire

代数的データ型はdatatypeキーワードで宣言できる。 #ats #nagoya

2015-05-24 17:04:47
おしいれのぼうけん @osiire

パターンマッチもある。タプル、レコード、コンストラクタなどでパターンマッチできる。_でなんでもマッチできる。 #ats #nagoya

2015-05-24 17:09:07
おしいれのぼうけん @osiire

datatype宣言時のof ()は省略できる。ただし、パターンマッチの時にはコンストラクタの後に()が必要なので留意。 #ats #nagoya

2015-05-24 17:18:39
おしいれのぼうけん @osiire

case+と書くと網羅性チェック(コンパイルエラー)もしてくれる。caseだけだと警告になる。case-だと網羅性チェックなし。 #ats #nagoya

2015-05-24 17:20:53
おしいれのぼうけん @osiire

val+を使うと束縛時の網羅的でないパターンマッチがコンパイルエラーになる。 #ats #nagoya

2015-05-24 17:31:04
I moved to Mastodon. @masterq_mogumog

今日はここまでー "網羅的なパターンマッチ" #ats #nagoya

2015-05-24 17:36:40
おしいれのぼうけん @osiire

val+の網羅性チェックはパターンマッチの形だけ見るのではなく、(依存型のように)文脈まで考えてチェックしてみれる模様。(すごい!) #ats #nagoya

2015-05-24 17:37:40
I moved to Mastodon. @masterq_mogumog

次回やるべきこと: 関数テンプレート,参照,配列,総称テンプレート実装,特殊テンプレート実装,抽象型 だけを読んで後は楽しい依存型に突入しましょう! #ats #nagoya

2015-05-24 17:46:47
おしいれのぼうけん @osiire

「キラーアプリはなんだろう?」「Cで書かれていて正確性が必要なミドルウェア。SSLのような。」 #ats #nagoya

2015-05-24 17:56:48
おしいれのぼうけん @osiire

BLUISH CODER: 安全なプログラミング言語を使って heartbleed を防ぐには github.com/jats-ug/transl… #ats #nagoya

2015-05-24 18:00:27
I moved to Mastodon. @masterq_mogumog

次回を企画しました! #ats #nagoya / 「ATSプログラミング入門」読書会@名古屋 第1回 - 関数型IoTプログラミング | Doorkeeper fpiot.doorkeeper.jp/events/25744

2015-05-24 19:19:09