うぜえ。
計算可能性の理論やラムダ計算がLispを産んだように、プログラム意味論や圏論はHaskellを産んだ。
プログラム意味論では変数の型が議論の最小単位で、関数やプログラムはある型の変数を別の型の変数へ変換する変換器として記述される。
だから本質的に、型が無いとプログラムという概念が存在できないことになる。
で、このアカデミックな議論が普段書くコードにどう影響を与えるかというと、実はほとんど影響がない。
もちろん知っていた方がよりエレガントなコードを書けるだろうが、必須ではない。
Haskellって後から圏論取り入れたんじゃなかった? あと、型の有無と動的・静的型付がごっちゃになってね?Rubyだって型に相当するものはあるじゃん?
もちろんRubyは静的型付け言語だよ。 「ある時はintっぽく振る舞い、別のある時はStringっぽく振る舞う、ぱっと見じゃ判断できないいい加減な型」の付いたな。 そこをいい加減に済ませ...
もちろんRubyは静的型付け言語だよ。 タイポ? ある時はintっぽく振る舞い、別のある時はStringっぽく振る舞う、ぱっと見じゃ判断できないいい加減な型 暗黙の型変換のこと? Rubyだ...
暗黙の型変換を抜いた「型制約がストリクトな言語」って「ダック・タイピングを実装していない言語」って意味だと思うんやが。 それってプロジェクトレベルで型を厳密にするかしな...
多分そこらへんって生まれの差なんだろうな。 ワイは業務からプログラミングに入ったから、プログラミング言語の設計思想を学ぶ機会なんぞ無かったし、今までもその必然性を感じる...