Haskell

今さらfizzbuzz(剰余なし)〜おまけJavaFX版〜

『どうしてプログラマに・・・プログラムが書けないのか?』 http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm 3連休。 暇なので、他の切り口での剰余演算なしfizzbuzz解法を考えてみる。 fb n | elem n [15,30..100] = "FizzBu…

Haskell勉強会(第5回)

先週はサボったけど、今週は参戦。 今日は遅延評価のお話。 Rubyで遅延評価、無限リストの話は、完全に勘違いでした、サーセンm(_ _)m 遅延評価 - Wikipedia 何と勘違いしたんだろ。 プログラミング言語マルチリンガルを維持するのはむつかしい。

Haskell勉強会(第2回)

現実逃避(失礼)で、社内のHaskell勉強会に参加。 やっと社内にもHaskellerの輪が。 やはり独りでやるより楽しい。 ”Haskellらしい”構文とは?という話がでる。 構文の話じゃないけど、僕がHaskellらしいと感じるのは、 head (x:_) = x tail (_:xs) = xsこ…

Life Game完成

描画ループ 最初、"sleepして描画する"をループさせりゃいい、なんてトンチンカンなこと考えてたので、 Haskell&sleepでググってると、『ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門』の青木氏のブログに行き着く。 http://ww…

Life Gameでハマる(パート2)

はぁ、だいぶ間が空いてしまた。 今年の夏はいろいろあったなぁ。 …まだ終わってないけど、自分の中では今年の夏は終わり気分。 つーことで、挫折したまんまじゃ悔しいので続き。 モナドの罠 って、勝手にハマってるだけなんだけれども。 誰かが”モナドは深…

Life Gameでハマる

現実の仕事は既存コードのバグで数日ハマっている。 なので、気晴らしにHaskellでも…と思ってたらこちらもハマるorz ライフゲーム きっかけはM・ミッチェル・ワールドロップの『複雑系―科学革命の震源地・サンタフェ研究所の天才たち (新潮文庫)』を読み返し…

ふつうのHaskellプログラミング

ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門作者: 青木峰郎,山下伸夫出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/06/01メディア: 単行本購入: 25人 クリック: 314回この商品を含むブログ (320件) を見る仕事がち…

Haskell その8

モナド乱読 亀のようなノロさでHaskellを学ぼうとしている。 けど、当然日記中で扱ったものだけに注目したわけでなく、わからないなりに拾い読みしてものは多々あるわけで…。 モナドに関しては、まず、ぼんやりとした輪郭をつかんでいきたい。 今日はその1…

Haskell その7

Listあれこれ。 リストとインデックス いつものごとく写経しながら動かしながら考える。http://www.sampou.org/haskell/report-revised-j/list.html elemIndex val list は、もしあれば、 list 中で最初にあらわれた val のインデックスを Just index として…

Haskell その6

ゆっくり学んでおります。 ガード f_positive1 n | n > 0 = True | otherwise = False f_positive2_NG n | otherwise = False | n > 0 = True f_positive3_NG n | n > 0 = True f_positive3_NG _ = False上から下へ評価されるのでf_positive2_NGは全てFalse…

Haslellその5

ラムダ計算続き g1 = \x y -> x + y g2 = \x -> map (g1 1) x g3 = \f -> map f [1..5] -- functional argument {- g1 2 3 -- 5 g2 [1..5] -- [2,3,4,5,6] g3 (g1 1) -- [2,3,4,5,6] -}*Sample1> :type g2 g2 :: [Integer] -> [Integer] *Sample1> :type g3 …

Haskell その4

少し馴染んできた(ウソ)ので、基本に戻って写経プログラミング。 http://www.hyuki.com/haskell/200412 結城氏の足跡をなぞる。ありがたや、ナムナム。 つまづいたとこだけ復習。 関数合成 test15 = head (tail [1,2,3,4,5]) test16 = (head . tail) [1,2,…

Haskell その3

おきまりのQuick Sortの例。 quicksort [] = [] quicksort (x:xs) = quicksort [y | y <- xs, y<x] ++ [x] ++ quicksort [y | y <- xs, y>=x]動かしてみる。 import System quicksort [] = [] quicksort (x:xs) = quicksort [y | y <- xs, y<x] ++ [x] ++ quicksort [y | y <- xs, y>=x] main = do args <- getArgs mapM_ (\a -> putStr (a…</x]></x]>

Haskell その2

うーむ、道のりは遠いなぁ。 じっくり行くとしましょうか。周りが明るければ、遠くを見渡して近道を考えるけども、 こういう暗闇の中にいるときは足元だけ気にしとこう。とりあえず、再度、他の人のcatを見てみる。 import System main = do args <- getArgs…

Haskell その1

Haskellでdiffを書けないものかと悪戦苦闘。 『やさしいHaskell入門』を読む。 http://www.sampou.org/haskell/tutorial-j/index.html どこがやさしいのだ?w こういうときはとにかく書いてみる。 まずはcatを書いてみる。 import System cat :: String -> …