2007-01-17から1日間の記事一覧

遅延評価。

評価しなければならない値が存在するとき、実際の計算を値が必要になるまで行わないことをいう。 必要な式だけ評価する main = do myIf (True) (putStrLn "then") (putStrLn "else") myIf :: Bool -> a -> a -> a myIf True t e = t myIf False t e = e 結果…

isPrefixOf関数

(Eq a) => [a] -> [b] -> Bool [a]の全要素が[b]の先頭からの要素に含まれていたらTrueを返す。 (Eq a) => import List main = do print $ isPrefixOf [1,2] [1,2,3] print $ [1,2] `isPrefixOf` [1,2,3] print $ [2,3] `isPrefixOf` [1,2,3] 結果。 True Tr…

tails関数

[a] -> [[a]] [a]内の全ての要素、第2以降の要素、第3以降の要素、以降、空リストまでをリストにして返す。 import List main = print $ tails [1, 2, 3] 結果。 [[1,2,3],[2,3],[3],[]]

any関数。

(a -> Bool) -> [a] -> Bool [a]の要素に対して(a -> Bool)を適用し、1つでもTrueの場合、Trueを返す。 main = do print $ any anyTest [2, 3, 4, 5, 1] print $ any anyTest [1, 2, 1] print $ any anyTest [2, 4, 5] anyTest :: Int -> Bool anyTest n = i…

コマンドライン引数を読み込む。

import System main = do args <- getArgs print $ args コンパイルし、コマンドライン引数に『a b c』と渡して実行。 結果。 ["a","b","c"] スペースで区切られた配列として返されているようだ。

import宣言。

様々な関数、変数が定義されているモジュールを使用する場合、import宣言を使用するとそのモジュールが使用可能となる。 import System 名前空間みたいなものか。 全ての関数、変数はいずれかのモジュールに属しており、モジュールを定義していない場合、そ…

where節。

where節以降で関数を定義すると、その直前で定義した関数からのみ使える関数が定義関数を定義、変数を束縛できる。 main = do print $ whereTest 1 whereTest :: Int -> Int whereTest n = plus 5 where plus :: Int -> Int plus num = n + num この場合、pl…

haskell-modeのインデント。

main = do cs -> getContents■ この状態でreturnキーを押すと main = do cs -> getContents ■ カーソルは先頭に来る。 Tabを押すと main = do cs -> getContents ■ getContentsのところに移動。 その後、ちまちまとcsのところに移動させていたけど、もう一度…