[過去ログ] 関数型プログラミング言語Haskell Part22 (1001レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
739
(4): 2013/03/23(土)12:46 AAS
*Main> :type (+) (-)
(+) (-)
:: (Num (a -> a -> a), Num a) => (a -> a -> a) -> a -> a -> a

これを解説してください。(+) を数ではない (-) に適用できる?
741: 2013/03/23(土)12:46 AAS
>>739
ヒント:カリー
745
(1): 2013/03/23(土)12:46 AAS
>>739
(-)はデフォルトでは「数」じゃないけど、インスタンスを定義すれば数になる
たとえばNumInstancesパッケージのData.NumInstances.Function
外部リンク[html]:hackage.haskell.org
をインポートすると、
instance (Num b) => Num (a -> b)
が定義されるので、例えば(Int -> Int -> Int)を加減乗除できるようになる
747
(1): 2013/03/23(土)12:46 AAS
>>739

> (+) を数ではない (-) に適用できる?
できない。

*Main> :type (+) (-)
(+) (-) :: (Num (a -> a -> a), Num a) => (a -> a -> a) -> a -> a -> a

これが言っているのは、ざっくりいえば「もし、(-)が数であれば、(-)に(+)を適用できますよ」ということ。

まず、プログラマが何らかの方法で(-)を数(Numのインスタンスの値)になるようにしてあげなければならない。
首尾よくそれが実現できたら、晴れて(+)を(-)に適用できる。
750: 2013/03/23(土)12:46 AAS
>>749
それだと自然数の型が(forall a. (a -> a) -> a)みたいになって、
>>739で要求されてる(a -> a -> a)とは別物
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.061s