2012-02-17から1日間の記事一覧

Integerというすごい桁のデータ型

Int型は普通の整数型 Integer型は桁数に制限がない(?) "factorial.hs" factorial :: Integer -> Integer {-factorialの型はIntegerを貰いIntegerを返す-} factorial n = if n == 0 then 1 else n * factorial (n - 1) loadして Prelude> :load "factorial.h…

リストの操作

メモリンク(こちら) Preludeについてのサイト(こちら)でList operationsの項(こちら)を淡々と見ていこう map :: (a -> b) -> [a] -> [b] map _ [] = [] map f (x:xs) = f x : map f xs (a -> b) なる関数(任意の型aの値を型bの値に移す関数)と[a](型aの値の…

cons (:)関数

クイックソートの関数は有名らしい quicksort [] = [] quicksort (x:xs) = quicksort [y | y <- xs, y<x] ++ [x] ++ quicksort [y | y <- xs, y>=x] 見慣れないシンボルが多いので備忘録 "x:xs" これは、x1という要素と、[x2,x3,...,xn]というリストからできた[x1,x2,x3,...,xn]という意味 どうしてそ</x]>…

Haskellの作り

資料はHaskell 2010 Language Report(こちら) I Haskell 2010 Language 構成要素 Identifier(識別名)を付けて扱うもの(Namespaceに関すること) 6種類の名前をつけて扱うもの Values(値) (1) Variables(変数) (2) Constructors(構成子・コンストラクタ) Type…

対話式で変数を作る

Haskellで「値代入したい!」(代入はできなくて、値束縛はできる) こちら let v = [[3,2,1],[0,4,5]] 非対話式なら(この資料(こちら)に出ている列車の問題を解くための助走)以下のようなものをhoge.hsに書いてloadすればよい initTrain :: [[Int]] -- テスト…