2013年3月2日土曜日

開発環境

Real World Haskell』(Bryan O'SullivanJohn GoerzenDon Stewart(著)、山下 伸夫伊東 勝利株式会社タイムインターメディア(翻訳)、オライリー・ジャパン、2009年、ISBN978-4-87311-423-3)の6章(型クラスを使う)の6.9(重複インスタンスのないJSON型クラス)の練習問題1、2.を解いてみる。

1, 2.

入出力結果(Terminal, ghci)

$ ghci
GHCi, version 7.4.2: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> :module +Control.Arrow
Prelude Control.Arrow> :type second
second :: Arrow a => a b c -> a (d, b) (d, c)
Prelude Control.Arrow> second (10+) (1,2)
(1,12)
Prelude Control.Arrow> second (10-) (1,2)
(1,8)
Prelude Control.Arrow> :type (,)
(,) :: a -> b -> (a, b)
Prelude Control.Arrow> (,) 1 2
(1,2)
Prelude Control.Arrow> :type (,,)
(,,) :: a -> b -> c -> (a, b, c)
Prelude Control.Arrow> (,,) "haskell" 1 True
("haskell",1,True)
Prelude Control.Arrow> :quit
Leaving GHCi.
$

入出力結果だけみると、Control.Arrowのsecondは第1引数に渡された関数(型クラス、Arrowのインスタンス)を2つの要素のタプルの2個目だけに適用する関数ってことでいいのかな。。「:type second」で調べてみたものの、dっていうのがでてきてよく分からないまま。

関数「(,)」と「(,,)」はそれぞれ2つの引数、3つの引数でそのタプルを返す関数みたい。

0 コメント:

コメントを投稿