[過去ログ] 次世代言語12 Go Rust Swift Kotlin TypeScript (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
105(1): デフォルトの名無しさん [sage] 2018/07/09(月) 11:52:20.80 ID:b/biyW6c(1/4) AAS
>>103103(2): デフォルトの名無しさん [sage] 2018/07/09(月) 11:44:42.26 ID:KFrfmR/A(1/4) AAS
依存型がある言語はML族もしくはF#の軽量構文みたいなのが多いのはなんでなの?
C系のシンタックスだと何か不都合でもあるの?
後の引数のpredicateが前の引数を参照するためにはカリー化されてると都合がいい
112: デフォルトの名無しさん [sage] 2018/07/09(月) 17:03:28.03 ID:b/biyW6c(2/4) AAS
>>106106(3): デフォルトの名無しさん [sage] 2018/07/09(月) 12:46:40.19 ID:KFrfmR/A(2/4) AAS
>>104
C系の方が慣れてる人が多いでしょ?それだけである程度意味があると思うけど
>>105
正直何言ってるかよくわからないんだけど、依存型とカリー化って別に関係ないんじゃないの?
だって、依存型のあるATS2では関数宣言↓だけは何故かC(Golangっぽい?)シンタックスだよ
fn test(x: double, y: double): double
だから、ATS2はML族なのにカリー化しづらいよ
カリー化されてると全部1引数の fun a -> aを使う(かもしれない)型 の形で済むだろ
ATS2がどうしてるかは知らん
117(1): デフォルトの名無しさん [sage] 2018/07/09(月) 18:41:02.84 ID:b/biyW6c(3/4) AAS
まともな推論を入れようとしたら>>108108(2): デフォルトの名無しさん [sage] 2018/07/09(月) 13:40:36.06 ID:XHrPXSC2(1/2) AAS
>>103
> 依存型がある言語はML族もしくはF#の軽量構文みたいなのが多いのはなんでなの?
> C系のシンタックスだと何か不都合でもあるの?
依存型や本来の多相型(polymorphism)[†]などは型理論の体系つまり高階の型付λ計算に関する論理体系に基づくので
プログラミング言語の型システムとして組み込む場合には同じくλ計算に基づくと関数プログラミング言語の枠組みとは親和性が良いが
Cなどのように変数の値を書き換える代入文や代入演算を有する命令的プログラミング言語とは馴染まない。[‡]
だからそれらの型システムを導入した言語は既存の関数プログラミング言語の構文を流用するケースが多いのだろう。
なおStandard ML/CAML/OCaml/F#などeager evaluationを評価ルールとするいわゆるML系の関数プログラミング言語の一群は
ref型のように代入可能な変数を許すが、本格的な型理論に基づく型システムを組み込む場合はref型の類は除いたsublanguageに対して
行うのが普通。
[†]:本来の多相型とはGirardが竹内の基本予想に関する学位論文で最初に発見(あるいは発明)し
Reynoldsが独立に再発見した型の全称化・抽象化やMilnerが発見したlet-polymorphismなどを指す。
オブジェクト指向での継承に伴って使われるようになった“polymorphism”は
定義が不明確で勝手な拡大解釈が多いので「本来の」という修飾句の対象範囲からは除く。
[‡]:代入操作(代入文と代入演算の総称)を含む命令的プログラミング言語
(Cなどの手続き的プログラミング言語やオブジェクト指向プログラミング言語を纏めてこう呼ぶ)に
例えば多相型が馴染まない理由は代入操作可能な変数の型として多相型を許すことは
その変数について動的な型付けを許すことに他ならなくなる。
例で少し説明するが既知なら許してくれ。最も基本的な多相型 ∀t.t (どんな型でもOK)と宣言された変数 x を考える、つまり
∀t.t x;
この変数はどんな型の変数としても使えるので、これにint型の値 1 は代入できる、
x = 1;
この後で式の中でこの変数の値を参照すると int型の値 1 が許される文脈以外ではエラーになる。
即ち、型理論における本来の多相型つまり静的な型付けでの多相型の概念は代入可能な変数では失われるということだ。
みたいな理由で式ベースになるんだから
C系に似せようとしたところで不格好で無駄に記述量も多いキメラができるだけだろ
ところでBASIC舐めてるわけ?
123: デフォルトの名無しさん [sage] 2018/07/09(月) 21:56:18.25 ID:b/biyW6c(4/4) AAS
>>120120(1): デフォルトの名無しさん [sage] 2018/07/09(月) 21:22:54.54 ID:KFrfmR/A(4/4) AAS
>>117
そうか?式指向でC系のシンタックスっていったら真っ先にRustが頭に浮かんだが
別に不格好とも無駄に記述量が多いとも感じないが…
そもそもC系の時点で何指向だろうが関数型と比べると記述量は少し多くなるものだし…
C系を式指向にしたところでそんなに変になるところは無いと思うんだが
別に全部C系にしろって言ってる訳じゃないんだ
依存型ありの言語にも1, 2個くらいC系があっても良いのにっ思ってるだけで…
rustは根っこのところは手続き型だからな
もっと式ベースを徹底していったらC系文法なんてどんどん余計なものになってくよ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.038s