stack new project_name --resolver=lts-23.25 を実行すればとりあえずHLSのエラーは出ない
stack newコマンドはリゾルバーを明示的に指定してあげないと最新のsnapshotを持ってきちゃうぽい

適当なコードは
runghc file.hsで実行

2025-05-21

foldr :: (a -> b -> b) -> b -> [a] -> b
foldr f e [] = e
foldr f e (x:xs) = f x (foldr f e xs) -- ①
 
sum :: Num a => [a] -> [a]
sum [] = 0
sum (x:xs) = x + sum xs -- ②
{-
この時、
(foldr f e) -> sum
f -> (+)
e -> 0
とすると①と②が同じものを表すようになる
 

filter f (x:xs) = if f x : filter xs

2025-05-28

キャンセレーションルール

all :: (a->Bool) -> [a] -> Bool

all f xs :: Bool

all f :: ([a] -> Bool)
 
-- allという関数にf :: (a->Bool)という引数を渡しているので、最初の引数の型を省略できる

関数合成

all f xs = (all f) xs = (and . map f) xs
					  = and (map f xs)

all f = and . map f
 
-- 同じ引数が両辺の後ろにある時、その引数を省略して書くことができる