タグ

haskellに関するYamashiro0217のブックマーク (23)

  • 2013年8月現在のHaskell開発環境 - maoeのブログ

    以前はHaskell Platformを使っていたのだけど、Cabalの依存関係ソルバがあまり賢くなかったこともあり、いわゆるdependency hellに陥ることが多かった。それからというものHaskell Platformを使わない環境を使っている。OS Xでは公式のインストーラやらHomebrewやMac Portsなど幾つかの方法が用意されているが、こんな方法もあるよということで紹介してみよう。 GHCのインストール GHCのリリース版は自分でビルドしない。時間が掛かるから。インストーラは使わずにtarball版を使う。これはインストール先を自分で指定したいため。 tar zxvf ~/Downloads/ghc-7.6.3-x86_64-apple-darwin.tar.bz2 cd ghc-7.6.3/ ./configure --prefix=/usr/local/ghc/

    2013年8月現在のHaskell開発環境 - maoeのブログ
  • 他の言語を学んで自由になろう

    1 kazu@iij.ad.jp 2 3 Paul Graham 4 Andrew Hunt and David Thomas 5 6 Java 7 Java Java Java 3 8 Haskell Scala Scala 9 10 Java Java Dean Wampler AWT ActionListener public interface ActionListener extends EventListener { public void actionPerformed(ActionEvent e); } 11 AWT ActionListener import java.awt.*; import java.awt.event.*; class ButtonApp { private final Button button = new Button(); public Bu

  • Haskell/Understanding arrows - Wikibooks, open books for an open world

    We have permission to import material from the Haskell arrows page. See the talk page for details. Arrows, like monads, express computations that happen within a context. However, they are a more general abstraction than monads, and thus allow for contexts beyond what the Monad class makes possible. The essential difference between the abstractions can be summed up thus: Just as we think of a mona

  • Haskellのカッコいいところを紹介してみる - hnwの日記

    あけましておめでとうございます。年もよろしくお願いいたします。 唐突ですが、Haskellを少しやってみたので、その感想を書いてみます。 僕は正月休みにHaskellでProject Eulerに挑戦していました。これは、数学っぽい問題をプログラムを書いて解いていくサイトです。数学は再帰的な定義が多いため関数型言語が向いているだろうと考え、ほぼ未経験のHaskellを試してみました。 解けそうな問題から50問解いてみましたが、随分スラスラ書けるようになってきた気がします。また、書いていると不思議と気持ちがいい言語だという印象を受けました。気持ちよさは複合的なものだと思いますが、その要因になっていそうな特徴を紹介してみます。 数学英語の知識で「読める」表現が多い いきなり印象論なんですが、Haskellのコードは初見でもそこそこ読める気がします。中の人が読みやすさを大事にしているためだろ

    Haskellのカッコいいところを紹介してみる - hnwの日記
  • 関数プログラミングが 教えてくれる規律

    1 2 1 3 2 4 2 5 6 7 8 9 10 11 12 Haskell 13 14 Haskell 15 16 ( ) 17 ) 30 18 static 19 (IORef) 20 21 OK NG 22 Haskell (+) :: Num a => a -> a -> a sort :: Ord a => [a] -> [a] delete :: Eq a => a -> [a] -> [a] hGetLine :: Handle -> IO String writeFile :: FilePath -> String -> IO () writeIORef :: IORef a -> a -> IO () IO IO 23 24 1) Ruby 25 1) Haskell 26 2) > split " foo bar baz " ["foo","bar","baz"]

  • Applicativeのススメ - あどけない話

    この記事の目的は、Applicative 信者による Applicative スタイルの布教です。 簡潔に結論を述べると、 foo = do a <- m1 b <- m2 return (f a b) のようなコードを書きたくなったら foo = f <$> m1 <*> m2 と書きましょうということ。 合い言葉は、「do と return をなくせ!」です。 FunctorとMonadの間 Functor を特殊化した型クラスがMonadで、Monadの方が強力です。なぜなら、メソッドが増えるからです。 Functorのメソッドはfmapです。fmapの別名を (<$>) といいます。(この記事では、(<$>) と liftM を同一視します。) そして、Monadのメソッドは、ご存知の通り (>>=) と return です。 FunctorとMonadの間にApplicative

    Applicativeのススメ - あどけない話
  • partake.in

    This domain may be for sale!

    Yamashiro0217
    Yamashiro0217 2012/09/07
    スタートHaskell申し込みした!初参加や!
  • http://tanakh.jp/pub/fp-tudoi-2012/tudoi.html

  • Haskell でのデバッグ - あどけない話

    「純粋関数型言語はデバッグしにくい。だって純粋な関数で printf デバッグできないから」とつぶやいている人をよく見かけます。これまで放置してきましたが、リツイートが50を超えたので、Haskellでのデバッグについて書きます。 例外処理と同じように、Haskell でのデバッグでは、純粋な関数と IO を分けて考える必要あります。 IO での printf デバッグ IO では、putStrLn や print が使えるから問題ないですよね? foo :: Int -> IO Bool foo i = do x <- あれして i putStrLn $ "x = " ++ show x これして putStrLn "ここも通過" -- それもする y <- それもする print y return y ちなみに、forkIO 起動した軽量スレッドから putStrLn する場合、軽量ス

    Haskell でのデバッグ - あどけない話
  • Haskell Day2012 - 参照透過性とは何だったのか

    SonicGarden Study #11で放送された資料から一部スライドを抜いたものになります。 http://sonicgarden.doorkeeper.jp/events/13229 ----- 優れたプログラマだけが優れたソースコードを書くことができます。 では優れたプログラマになるにはどうすれば良いでしょうか。 自分の書いたコードを、優れたプログラマに指摘してもらうことが一番の近道です。それがコードレビューです。たった一人でコードレビューも受けずに、ただ書き続けてもクソコードはクソコードのままなのです。 そこで今回は、良いコードが書けるプログラマになるための、コードレビューを上手に実践する秘訣を話します。

    Haskell Day2012 - 参照透過性とは何だったのか
  • エラー処理を書いてはいけない

    エラー処理を書いてはいけない田中英行 tanaka.hideyuki@gmail.com 2011/12/08 @PFIセミナー 自己紹介田中英行 (@tanakh, http://tanakh.jp) PFI社でプログラマやってますJubatuspficommon検索エンジンのコアエンジンHaskell愛好家msgpack / rpc / idlpeggy (パーザジェネレータ & QQ w/ AQ)Shu-thing (シューティングゲーム) / (Monadius メンテナ)今気になるパッケージは monad-controlLearn you a Haskell 鋭意翻訳中 (春頃発売予定) エラー処理を書いてはいけない日の概要エラー処理を抽象化しようというお話です 現在のエラー処理の抱える問題どのように解決するのか実際の例エラーは処理しなければならない エラー処理を書いてはいけな

  • Ruby の聖地で Haskell を語る

  • Haskellの講義に関するQ&A - あどけない話

    岡山大学で、関数プログラミングの講義を一コマ担当しました。資料は、函数プログラミングの集いで使った関数プログラミングの道しるべを流用しました。ちゃんと用意しなくて、講義を受けた学生には申し訳ないです。 講義内容に関して質問を頂きました。同じような疑問を持つ人も多いと思いますので、担当教官の許可を得てここに公開します。 永続データプログラミングの意義は分かったが,破壊しないと効率が悪いのではないですか.配列のような構造が世の中には多い気がします.メモリは足りなくなりませんか. 基的に永続と呼ばれているデータは、共有の効率が高く、しかも不要になった部分はすぐに GC に回収されます。また、GHC の GC はすごく優秀であることが知られています。 Haskell では、下位のレイヤーではデータを破壊できて、たとえば固定長のバッファーを使い回すといったことも可能です。ただ、それは普通のプログラ

    Haskellの講義に関するQ&A - あどけない話
  • 剰余もfor文も使わないでHaskellでfizzbuzzを書いてみた - shokosブログ

    遅延評価バンザイヽ(^o^)丿 fizz = cycle ["","","fizz"] buzz = cycle ["","","","","buzz"] fizzbuzz = zipWith fb [1..100] $ zipWith (++) fizz buzz where fb n a | a == "" = show n | otherwise = a cycleは循環リストを作る関数なので、GHCiでなにげなく試すとけっこう慌てる。

    剰余もfor文も使わないでHaskellでfizzbuzzを書いてみた - shokosブログ
  • モナドはメタファーではない · eed3si9n

    2011-05-28 Scala界の関数型プログラミング一派を代表する論客の一人、@djspiewak が 2010年に書いた “Monads Are Not Metaphors” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2010年12月27日 Daniel Spiewak 著 2011年5月29日 e.e d3si9n 訳 僕は今、約束を破るところだ。およそ三年前、僕は絶対にモナドの記事だけは書かないと自分に約束した。既にモナドに関する記事は有り余っている。記事の数が多すぎてその多さだけで多くの人は混乱している。しかも全員がモナドに対して異なる扱い方をしているため、モナドの概念を初めて学ぼうとする者は、ブリトー、宇宙服、象、砂漠のベドウィン (訳注: アラブ系遊牧民) の共通項を探す努力をするハメになっている。 僕は、この混乱した

  • 右も左も分かる再帰 - あどけない話

    「函数プログラミングの集い」のチュートリアル資料を作成するためのメモ。リストに対する再帰を2つに分類することで理解する。 再帰 関数プログラミングでは、繰り返しを再帰で実現する。入力がリストである関数を実装するとする。この種の関数は、出力の種類により以下の2つに分類できる。 同じ順番のリストを作る 数値などを作る。あるいは逆順のリストを作る。 リストからリストを作る再帰 例として、(++)、concat、map、filter の利用例と実装を示す。 (++) (++) は連結(append)関数。 [1,2] ++ [3,4,5] → [1,2,3,4,5] 実装はこう。 (++) :: [a] -> [a] -> [a] (++) [] ys = ys (++) (x:xs) ys = x : (xs ++ ys) concat concat は、リストのリストをリストに平坦化する。 c

    右も左も分かる再帰 - あどけない話
  • 2011年に Haskell を始める人のために - あどけない話

    適切な一歩を踏み出すか否かは、大きな違いを生みます。この記事では、2011年に Haskell を始める人のために、著者が考える最適な入門方法を示します。 Haskell Platform をインストールする 昔人気のあった Hugs は、もう保守されていません。現在は、GHC の時代です。GHC とライブラリをパッケージ化した Haskell Platform をインストールして下さい。 インタープリタが使いたい場合は、付いてくる ghci を使います。 コンパイラ -- ghc インタプリタ -- ghci スクリプト -- runghc GHC マニュアルの日語訳もあります。 プログラミングHaskell 次に、プログラミングHaskellを読んで関数プログラミングの「こころ」を理解しましょう。 プログラミングHaskell 作者: Graham Hutton,山和彦出版社/メー

    2011年に Haskell を始める人のために - あどけない話
  • Haskell で書いた HTTP サーバー - あどけない話

    Haskell で書いた HTTP サーバー Mighttpdをリリースしました。Mighty (マイティー)と読みます。興味のある人は、遊んでみて下さい。これまで Mew.org は Apache で運用してきましたが、すでに Mighttpd に置き換えています。

    Haskell で書いた HTTP サーバー - あどけない話
  • Haskell製のWikiエンジン·Gitit MOONGIFT

    GititはWebベースのオープンソース・ソフトウェア。世界中には様々なプログラミング言語が存在するが、その一つとしてHaskellをご存知だろうか。筆者自身あつかったことがないので詳細は省くが、遅延評価と呼ばれる機能が特徴的な関数型プログラミング言語だ。 見やすいインタフェースのWikiエンジン 仕事趣味で使っているプログラミング言語を深く探求するのも良いが、新年でもあるし新しい世界に踏み出してみるのも面白そうだ。GititはHaskellを使って作られたWikiエンジンなので、Haskellの学習にはぴったりなソフトウェアと言えそうだ。 GititはWebサーバも提供されるソフトウェアで、起動すると5001番ポートで立ち上がる。画面はWikipedia風で、表示と編集、編集履歴そしてノートが付けられるようになっている。日語のタイトルページを作成することも可能だ。 編集画面 左側には

    Haskell製のWikiエンジン·Gitit MOONGIFT
  • 本物のプログラマはHaskellを使う:ITpro

    筆者 shelarcy Haskellは,関数型プログラミングというジャンルに属する言語です。Haskellや関数型プログラミングを題材に物事を見ていくことで,今まで思いもよらなかったような未知の世界を知ることができるでしょう。 プログラミング言語を学ぶという行為には, 言語の基的な文法や考え方を理解する 言語の文化圏で広く使われている考え方に親しんでその言語らしい書き方を習得する 単に言語を使ってできること以上の知恵を学ぶ の3段階があります。この連載では,三つ目の段階を目標に,Haskellプログラミングの世界を一つひとつ丁寧に紹介していきます。 更新は毎月第1水曜日(1月のみ第2水曜日)

    本物のプログラマはHaskellを使う:ITpro