開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Haskell (プログラミング言語)
- Haskell Platform(ghci)(処理系)
関数プログラミング入門(Richard Bird (著)、山下伸夫 (翻訳)、オーム社)の第1章(基本概念)、1.6(型)、練習問題1.6.1、1.6.2、1.6.3、1.6.4を取り組んでみる。
練習問題1.6.1、1.6.2、1.6.3、1.6.4
コード(Emacs)
-- 1.6.1 const :: a -> b -> a const x y = x subst :: (a -> b -> c) -> (a -> b) -> a -> c subst f g x = f x (g x) apply :: (a -> b) -> a -> b apply f x = f x flip :: (a -> b -> c) -> b -> a -> c flip f x y = f y x -- 1.6.2 f :: (Num a) => (a, a) -> a f (x, y) = x - y swap :: (a, b) -> (b, a) swap (x, y) = (y, x) g = Main.flip (curry f) h = curry (f . swap) -- 1.6.3 strange :: ((a -> b) -> a) -> (a -> b) -> b strange f g = g (f g) -- 1.6.4 square :: (Num a) => a -> a square x = x * x
入出力結果(Terminal, ghci)
$ ghci sample6.hs GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help [1 of 1] Compiling Main ( sample6.hs, interpreted ) Ok, modules loaded: Main. *Main> g 1 2 1 *Main> h 1 2 1 *Main> square 10 100 *Main> square 10.0 100.0 *Main> :q Leaving GHCi. $
0 コメント:
コメントを投稿