2016年7月28日木曜日

開発環境

7つの言語 7つの世界 (Bruce A. Tate (著)、まつもとゆきひろ (監訳)、田和 勝 (翻訳)、オーム社)の第8章(Haskell)、8.2(1日目: 論理的)、セルフスタディ1日目を取り組んでみる。

セルフスタディ1日目.

コード(Emacs)

module Main where

allEven1 xs = [x | x <- xs, even x]

allEven2 [] = []
allEven2 (x:xs) | even x = x:allEven2 xs
                | otherwise = allEven2 xs

myReverse1 [] = []
myReverse1 (x:xs) = myReverse1 xs ++ [x]

iter [] ys = ys
iter (x:xs) ys = iter xs (x:ys)
myReverse2 xs = iter xs []

colors = ["black", "white", "blue", "yellow", "red"]
colorCombinations = [(x, y) | x <- colors, y <- colors, x < y]
table = [(x, y, x * y) | x <- [1..12], y <- [1..12]]

colors1 = ["red", "green", "blue"]
coloring = [(("Alabama", alabama), ("Mississippi", mississippi),
             ("Georgia", georgia), ("Tennessee", tennessee),
             ("Florida", florida)) |
            alabama <- colors1, mississippi <- colors1,
            georgia <- colors1, tennessee <- colors1,
            florida <- colors1,
            mississippi /= tennessee,
            mississippi /= alabama,
            alabama /= tennessee,
            alabama /= mississippi,
            alabama /= georgia,
            alabama /= florida,
            georgia /= florida,
            georgia /= tennessee]
           

入出力結果(Terminal, REPL(Read, Eval, Print, Loop))

$ ghci
GHCi, version 7.8.3: 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> :load sample
[1 of 1] Compiling Main             ( sample.hs, interpreted )
Ok, modules loaded: Main.
*Main> allEven1 [1..10]
[2,4,6,8,10]
*Main> allEven2 [1..10]
[2,4,6,8,10]
*Main> myReverse1 [1..10]
[10,9,8,7,6,5,4,3,2,1]
*Main> myReverse2 [1..10]
[10,9,8,7,6,5,4,3,2,1]
*Main> colorCombinations
[("black","white"),("black","blue"),("black","yellow"),("black","red"),("white","yellow"),("blue","white"),("blue","yellow"),("blue","red"),("red","white"),("red","yellow")]
*Main> table
[(1,1,1),(1,2,2),(1,3,3),(1,4,4),(1,5,5),(1,6,6),(1,7,7),(1,8,8),(1,9,9),(1,10,10),(1,11,11),(1,12,12),(2,1,2),(2,2,4),(2,3,6),(2,4,8),(2,5,10),(2,6,12),(2,7,14),(2,8,16),(2,9,18),(2,10,20),(2,11,22),(2,12,24),(3,1,3),(3,2,6),(3,3,9),(3,4,12),(3,5,15),(3,6,18),(3,7,21),(3,8,24),(3,9,27),(3,10,30),(3,11,33),(3,12,36),(4,1,4),(4,2,8),(4,3,12),(4,4,16),(4,5,20),(4,6,24),(4,7,28),(4,8,32),(4,9,36),(4,10,40),(4,11,44),(4,12,48),(5,1,5),(5,2,10),(5,3,15),(5,4,20),(5,5,25),(5,6,30),(5,7,35),(5,8,40),(5,9,45),(5,10,50),(5,11,55),(5,12,60),(6,1,6),(6,2,12),(6,3,18),(6,4,24),(6,5,30),(6,6,36),(6,7,42),(6,8,48),(6,9,54),(6,10,60),(6,11,66),(6,12,72),(7,1,7),(7,2,14),(7,3,21),(7,4,28),(7,5,35),(7,6,42),(7,7,49),(7,8,56),(7,9,63),(7,10,70),(7,11,77),(7,12,84),(8,1,8),(8,2,16),(8,3,24),(8,4,32),(8,5,40),(8,6,48),(8,7,56),(8,8,64),(8,9,72),(8,10,80),(8,11,88),(8,12,96),(9,1,9),(9,2,18),(9,3,27),(9,4,36),(9,5,45),(9,6,54),(9,7,63),(9,8,72),(9,9,81),(9,10,90),(9,11,99),(9,12,108),(10,1,10),(10,2,20),(10,3,30),(10,4,40),(10,5,50),(10,6,60),(10,7,70),(10,8,80),(10,9,90),(10,10,100),(10,11,110),(10,12,120),(11,1,11),(11,2,22),(11,3,33),(11,4,44),(11,5,55),(11,6,66),(11,7,77),(11,8,88),(11,9,99),(11,10,110),(11,11,121),(11,12,132),(12,1,12),(12,2,24),(12,3,36),(12,4,48),(12,5,60),(12,6,72),(12,7,84),(12,8,96),(12,9,108),(12,10,120),(12,11,132),(12,12,144)]
*Main> coloring
[(("Alabama","red"),("Mississippi","green"),("Georgia","green"),("Tennessee","blue"),("Florida","blue")),(("Alabama","red"),("Mississippi","blue"),("Georgia","blue"),("Tennessee","green"),("Florida","green")),(("Alabama","green"),("Mississippi","red"),("Georgia","red"),("Tennessee","blue"),("Florida","blue")),(("Alabama","green"),("Mississippi","blue"),("Georgia","blue"),("Tennessee","red"),("Florida","red")),(("Alabama","blue"),("Mississippi","red"),("Georgia","red"),("Tennessee","green"),("Florida","green")),(("Alabama","blue"),("Mississippi","green"),("Georgia","green"),("Tennessee","red"),("Florida","red"))]
*Main> :q
Leaving GHCi.
$

0 コメント:

コメントを投稿