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

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

岡部さんのレクチャー始まった。#ats #nagoya

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

ATSは仕様と実装のかい離を防ぐのにプログラムにその検証機能を入れている。「 強調すると、私達はプログラムの検証にプログラマ中心のアプローチをしています。」#ats #nagoya

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

atsccはATS1, patsccはATS2のコンパイラ。#ats #nagoya

2015-05-24 13:38:54
おしいれのぼうけん @osiire

このマニュアルに出てくるコードは読みにくいです(^▽^;) #ats #nagoya

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

「ATSは豊かな構文(当社比)と高機能を両立しています。そしてその文法は多くの既存のプログラミング言語より、おそらく***複雑***です。」#ats #nagoya

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

正直だけどそれを言ってしまってはw #ats #nagoya

2015-05-24 13:50:29
おしいれのぼうけん @osiire

ATSでは&&や||のと同じ意味でandalsoやorelseも使えます。( ̄∇ ̄)v ドヤッ! 「(....要らなくね?....)」 #ats #nagoya

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

曖昧さがない時は、関数適用のかっこ()は省略できます。#ats #nagoya

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

式を名前に束縛するにはvalを使います。valはキーワードです。 #ats #nagoya

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

andで繋げた束縛についてその実行順番は実装依存。(実装一つしかないけどな・・・( ̄ω ̄;))#ats #nagoya

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

ローカル束縛はwhereでも作れる! #ats #nagoya

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

ATSはC99 に従ったC言語にコンパイルされます。ATSのintやdoubleは同名のC言語のintやdoubleになります。 #ats #nagoya

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

long longint, unsigned long long intもある。int64とかuint64はC99に無いのでない。ただ、そもそもプリミティブ型がprelude宣言なので自分で追加はできる。#ats #nagoya

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

C言語の型をATSの型に持ち上げられるから。#ats #nagoya

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

C言語埋め込みの%{ .. %} には$や^を付けると宣言場所を仮想的に最初に持って来たり最後に持って来たり出来る。(知らんかった!)#ats #nagoya

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

extern ..= "mac#hoge" のhogeの部分にはマクロも入れられる#ats #nagoya

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

タプルは(exp0 , exp1)もしくは@(exp0, exp1)で作れる。(exp0).0や(exp0).1で中身を参照できる。もちろん数字がタプルの要素数以上になると型エラー。 #ats #nagoya

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

ボックス化タプル '( exp0, exp1)はヒープに確保したタプルへの参照。なので、使う時には-DATS_MEMALLOC_LIBCオプションがないと型エラー。 #ats #nagoya

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

レコードとタプルは似ている。ドットで要素にアクセスできる。 #ats #nagoya

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

if, then, elseはキーワードです。else節が省略された時はelse ()が補完される。 #ats #nagoya

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

(exp1; exp2)で逐次式を作れる。最後の式以外void型であるべき。 #ats #nagoya

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

val () = expを使うのよくある。C言語のように暗黙的に戻り値を無視できないのでよい。でも val _ = expのようにされると無力。逐次式はvoid強制なので、意外といいのでは? #ats #nagoya

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

4重スラッシュはファイル終端までコメント。「これはファイルに実行結果とか入れられるから便利(小川先生談)」#ats #nagoya

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

ATSには複数引数の関数がある。タプルと組み合わせる場合は、関数のアリティに注意。 #ats #nagoya

2015-05-24 15:35:34