直和型の代わりにユニオン型を持つ静的型付け関数型プログラミング言語の開発
クリエータ:
伊藤謙太朗(電気通信大学 情報理工学域 I類 コンピュータサイエンスプログラム)伊藤謙太朗.icon
福間遼太郎(慶應義塾大学 理工学部 情報工学科)
担当PM:竹迫良範(株式会社リクルート データプロダクトユニット ユニット長)
Web上でCottonを実行することができます。Gitpodというサービスを使用しているので、利用するにはGitpodのアカウントを作る必要があります。また初回利用時にはエディターを選択する画面が出てくるので、VS Code Browserを選択してください。伊藤謙太朗.icon
便利!nishio.icon
javascriptで作ってるよさ。sowawa.icon
今までで一番わかりやすい!nishio.icon
確にわかりやすくなった気がするsowawa.icon
やっぱ実例はよいねnishio.icon
そして直和型ではなくユニオン型にしたいのか、逆ではなくnishio.icon
目的設定も面白い、今後の言語設計者へのメッセージが入っているjarakawa.iconsowawa.icon
この話か、「どうやったら他の言語に取り入れてもらえるか」
多くの人に使われて知ってもらう必要がある
LLVMとかバックエンドとか開発していく
どういうプログラマがターゲットなのか
Webプログラミングで型がないJavascirpt書きたくない、C言語書きたくないRust、みたいなどういう人なのか。
Haskelとか静的型付けのコンパイル言語
rustは型を求めてる人だけじゃなくて速さも求めてる人が使ってる。そこまで早くできないかも
ラムダを|で表現するの改行して並べると綺麗な感じにするためかなこだわりを感じるjarakawa.icon
I64の話、余談すぎではw 早くユニオン型の話して欲しい
言語仕様の意図を説明しておきたかったのだろうsowawa.icon
確に本題ではないw
演算子を作れるの良いね。世界を作ってる感sowawa.icon
最初から使えるんかい!
本題!
データ型は構造体
(Some[Int64] | None)は直和型ではなくユニオン型なの?nishio.icon
もう一度スライドの冒頭を見たくなってきた
比較の話!
Rustの直和型、
enumの段階で名前をつけて複数の形の直和にしてる
Cottonでは後からデータ型をtypeでまとめてる
型エイリアス?
質問した→Yesだったnishio.icon
より自然な言語の拡張がしやすいのかなsowawa.icon
なるほど、確かに直和型の要素は独立して使えない
Cottenでは元から型
ユニオン型の構成要素は型
Rustのエラー用のストラクトを作るのもtraitで解決するのもいまいち
traitだとそのtraitを持つものがすべて含まれてしまうので発生しうるエラーのエラー処理に対して網羅性チェックがきかない
なるほどーnishio.icon
プログラミング言語のプリミティブな機能が自分で定義できるの超クール
プリミティブなところとそうじゃないところが区別がないというか、同じ世界にできるのすごいsowawa.icon
ってか今更なんだけどこの発表、ライブコーディングでお送りしますなのかsowawa.iconkekeho.icon
ラムダとユニオン型の使用記号が同じだから混ざるとちょっと読みにくいかもjarakawa.icon
でもあえてそうしているんだろうなあ
回答ありがとうございますー!なるほど。同じ機能jarakawa.icon
シンタックスハイライトで解決するとか?nishio.icon
最後の再起的な型エイリアスって入れ子構造になってるようなデータ型ってことかな。who.icon
Treeみたいなやつかとnishio.icon
type Tree = (Int64|Tree)[]
コンパイルは通った
VSCodeがブラウザで動いて言語のデモをしやすいのね
自分の作った言語、ライブコーディングするのかっこいいな(当たり前なのかもだけど)阿部優樹.icon大迫勇太郎.icon今宿祐希.icon
ニコ生のコメントです。口頭で伝えるのは難しそうなのでここにペーストします。mitou.it.admin.icon
| None => 1 | Some(_) => 2 | _ => 3 という式がどんな型に推論されるか気になります