Unison
ASTベースプログラミング?
一般的なプログラミング言語はファイルシステムをベースにしているが(当たり前すぎて意識されない)、Unisonはどうやらそうではないようだ
何か用語を設定して欲しい。「ファイルベースではない」と表現されてた気がする。
Unisonではコードはucm(Unison Codebase Manager)によって管理される。ucmは一時ファイルに書かれたコードのコンパイルを通して通ったコードだけを指定の名前空間に保存する。その後、その一時ファイル上でも編集できるが真の実体?はucmが管理するコードベース上に存在することになる
編集したい場合はucmで対象の関数や型を一時ファイルに書き出して編集する。
流れはこんな感じ。コードは必ずコンパイルされた状態で保存される。
フォーマット可能性
Unisonのコードは常にASTかなんかで保存されている。それを閲覧、編集したいときは各環境で好きな形で展開できそうな気がする
現在はucmが勝手にフォーマットして出してくれている。このため表現に揺れがある機能(絶賛開発中なので新旧の書き方がある)が常に新しい書き方にフォーマットされて出てくることがあった。(doとlet'だっけ)
Abilities
Effect types and handlersのこと
Text ->{IO, Exception} Text
波括弧派
handler周りの構文はそこまですっきりしないかなという印象。kokaがきれいすぎるだけ Unison Cloud
unisonは書いた関数をそのままdeployして外から実行できるって世界を目指してるらしい
Remote abilitiyがついた関数をdeployできるようにするとか
そしてその関数はUnisonコードからみると型がついているように見えると。HTTPなどを透過的に扱いたいってやつ
これはまだできてない
Unison Share
Unisonコード専用レジストリ
ライブラリ配布用レジストリなら他の言語でもあるが、Unisonの問題としてファイルベースじゃないためGitHubなどで素直にマージなどのフローが回せない
現在は手元のucmで変更前後のコードを指定してPR用のテキストを生成してそれを貼ってくださいという手段を取っている。ちょっとどうかと思う
Darklangは専用エディタまで作らないといけない言語だが、Unisonは専用GitHubを作らないといけない言語だった Unison Shareは作られたがまだマージとかはできない模様。ロードマップには載っているがUnison Cloud優先っぽい