Hちょびよみ勉強ノート(3回目)

型クラス

(図内の分類は適当)

    • 値の集合
  • 型クラス
    • 型の集合

型をある何かしらの特徴で分類したものを型クラスと言う。「足し算できる型」とか「表示できる型」とか。
「型クラス」と言う名称はHaskellHaskellにインスピレーションを得た言語固有の語彙。言語によってはKindとか呼ばれたりもする。
型クラスに属する型はHaskellとかだと静的に決まるがJavaとかだと決まりきらない(継承とかがあるので)。
ある型に対する処理や演算が可能かどうかというのを静的に保証したい。目的としてはJavaとかで言う「インタフェースに対する実装」と同じだけどより型による制約が強い。

Eq型クラスは同型比較しか出来ないが異型比較はどうするの?

そもそも異なる型同士の比較とかはHaskellでは起こらない。
継承がないので何型が来るか分からないとか言うのはそもそも起こりえないし、全ての型は静的に決まる。
(equals(Object obj){...}で、実際の型は何型が来るんだろうみたいな状況がそもそも無い)

letとwhere

letは式、whereはただのキーワード。
whereは「どこ」ではなく関係副詞。

数学ではお馴染みの表現とのこと。

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パターンのところだけ「あず」とひらがなでルビが振ってあるのか問題

翻訳者が関係あるのでは説

*1:前置詞inは名詞に惹かれ合うらしい。whichは関係代"名詞"

*2:in which = where