Hちょびよみ勉強ノート(3回目)
型クラス
(図内の分類は適当)
- 型
- 値の集合
- 型クラス
- 型の集合
型をある何かしらの特徴で分類したものを型クラスと言う。「足し算できる型」とか「表示できる型」とか。
「型クラス」と言う名称はHaskellとHaskellにインスピレーションを得た言語固有の語彙。言語によってはKindとか呼ばれたりもする。
型クラスに属する型はHaskellとかだと静的に決まるがJavaとかだと決まりきらない(継承とかがあるので)。
ある型に対する処理や演算が可能かどうかというのを静的に保証したい。目的としてはJavaとかで言う「インタフェースに対する実装」と同じだけどより型による制約が強い。
Eq型クラスは同型比較しか出来ないが異型比較はどうするの?
そもそも異なる型同士の比較とかはHaskellでは起こらない。
継承がないので何型が来るか分からないとか言うのはそもそも起こりえないし、全ての型は静的に決まる。
(equals(Object obj){...}で、実際の型は何型が来るんだろうみたいな状況がそもそも無い)
letとwhere
letは式、whereはただのキーワード。
whereは「どこ」ではなく関係副詞。
@kamekoopa ん、それは数学系の英文に有るようにwhereは「ここでは〜とする」という定義を定める意味に捉えれば難しさは和らぐのではないかと。(あ、そうかwhichとかwhereとか英文書く時に割と使うし、数学系の英文として自然だから全然苦にならなかったのか…。)
2014-08-07 22:57:24 via YoruFukurou to @kamekoopa
数学ではお馴染みの表現とのこと。
let [binding] in [expression] と [expression] where(= in which) [binding] の間にある関係に思い至ったの、今日の #Hちょびよみ での一番の収穫だった。 #誰にも伝わらない
I was born in this house. ↓ This is the house which I was born in. ↓*1 This is the house in which I was born. ↓*2 This is the house where I was born.
let A in B と B where A は似たような機能を持つ構文だけど、英文として見ても割と似たような変換を出来るということっぽい。
何故asパターンのところだけ「あず」とひらがなでルビが振ってあるのか問題
翻訳者が関係あるのでは説