タグ

2012年1月23日のブックマーク (13件)

  • なぜ関数プログラミングは重要か

    John Hughes, Institutionen för Datavetenskap, Chalmers Tekniska Högskola, 41296 Göteborg, SWEDEN. rjmh@cs.chalmers.se この日語訳は原著者の承諾を得て山下がここに公開するものです。 この訳文についての、御指摘などは山下伸夫(nobsun .at. sampou.org)までおねがい いたします。 翻訳最終更新日 : 2011-09-17 原文 "Why Functional Programming Matters" 日語訳PostScript この論文は1984年以来何年ものあいだChalmers大学のメモとして回覧された。 1989年と1990年に幾分か改訂をしたのが[Hug89]と [Hug90]である。この版はもとのChalmer大学のメモ のnroff原稿をもとに

  • 関数プログラミングの道しるべ (application/pdf オブジェクト)

  • 再帰で考える - ぐるぐる~

    再帰は関数型言語を構成する重要な部品の一つです*1。 しかし、手続型言語に慣れたプログラマにとって、再帰で考えるというのは難しいものがあります。 このエントリは、そういうプログラマが再帰で考えることができるようになるために書きました。 言語としては、F# と C# を使っています (推奨は F#。C# の例は実用性が無いに等しい) が、Java プログラマでもある程度読めるでしょう。 前提条件として、これらの言語の文法は知っているものとします。 特に、C# で言う Func デリゲートを多用します。 すごい長いので、時間があるときに一気にどうぞ。 再帰以外の話もちょろちょろと出てきます。 再帰の重要性 いきなりですが、再帰はあくまで最後の手段です。 普通は再帰をカプセル化した関数を使うことになります。 通常使わないのであれば、再帰を学ぶことに意味はないのでしょうか? いいえ、それでも再帰を

    再帰で考える - ぐるぐる~
  • Index of /ghc/docs

    Name Last modified Size Description Parent Directory - 0.29/ 12-Feb-1999 13:57 - 2.10/ 12-Feb-1999 13:57 - 3.00/ 12-Feb-1999 13:58 - 3.01/ 12-Feb-1999 13:58 - 3.02/ 12-Feb-1999 13:58 - 4.00/ 12-Feb-1999 13:58 - 4.01/ 12-Feb-1999 13:58 - 4.02/ 12-Feb-1999 13:58 - 4.04/ 05-Oct-1999 10:25 - 4.04pl1/ 12-Feb-1999 13:58 - 4.06/ 26-Jan-2000 11:10 - 4.08.1/ 09-Oct-2000 09:11 - 4.08.2/ 22-Feb-2001 11:32 -

  • Haskell での Num の型クラスの関係がよくわからなかったので調べた - xuwei-k's blog

    @alphaneet さんが Haskell の勉強の様子を Ust してた ↓ 「Haskell 勉強したい、勉強したい」といいながら、結局最近あまりやれていないのを思い出し、自分もおもむろに ghci を立ち上げてみる ↓ let f 0 = 1 というとても単純な関数を定義してみる。 ↓ :type コマンドでそれの型を調べたら f :: (Eq a, Num a, Num a1) => a -> a1 ってなってる。 ↓ あれ alphaneet さんのやつと違う・・・?ちなみに自分が今試していたのは 7.3.20111021 (このとき入れたもの) ↓ なぜか自分のPCに古いversion (6.12.1) のghciも入ってる ↓ そっちで試すと f :: (Num t, Num t1) => t -> t1 ってなってる。 ↓ あれ Eq の Instance が必要かどうか

  • 型引数がNothingになるとコンパイルエラーにする方法( NotNothing Pattern ? ) - xuwei-k's blog

    かなり後になって追記: 最近のcasbahに取り入れられてるっぽい https://github.com/mongodb/casbah/compare/7e2256f155...a7e6cf5ee6#L0R109 https://github.com/mongodb/casbah/compare/7e2256f155...a7e6cf5ee6#L1R55 以下、元の文章 twitter上ではつぶやいてたんですが、結構重要で、実用的かもしれないと思ったのでblogにまとめてみる。 以前自分のblog上で、戻り値の型が型引数に依存してる関数についてというの書いて、その中で型引数が推論できない場合Nothingに推論されて実行時エラーになることを書いたわけですが、それをコンパイル時に防ぐ方法をたまたま見つけたという話。表題の NotNothing Pattern っていうのは、今勝手に自分が名づ

    型引数がNothingになるとコンパイルエラーにする方法( NotNothing Pattern ? ) - xuwei-k's blog
    alpha_neet
    alpha_neet 2012/01/23
    NotNothing Pattern
  • sbtでプロジェクトを分割する - bati11 の 日記

    Scalaで開発してるプロジェクトでsbt0.10を使ってるんですが、テストの数が増えてきて、テストのコンパイルでOut Of Memoryが発生しちゃう、という問題にぶつかりました。 テストケースはScalaTest使ってます。 解決策として、プロジェクトを分割してテストコードを分散させました。 ※追記 xuweiさんからのコメントにある通り https://github.com/harrah/xsbt/wiki/Setup-Notes にあるメモリに関する起動オプションをつけることで、開発時は大丈夫でした。 起動オプションで回避できることが多いと思いますので、そちらを先に確認するのが良いです。 開発時は大丈夫だったんですが、jenkinsに新規ジョブを作ったときに発生してしまいました。 subversionリポジトリからチェックアウト→sbt test の流れで全部のテストケースをコン

    sbtでプロジェクトを分割する - bati11 の 日記
    alpha_neet
    alpha_neet 2012/01/23
    Out Of Memory -> CMSClassUnloadingEnabled
  • BDD on Haskell の為のディレクトリ構成を考える

    ひさしぶりの Haskell ネタ 2011/12/13 追記下の例で app.cabal の設定や Setup.hs の記述などの情報が古かったので,こちらも一読してください → BDD on Haskell チュートリアル その0 経緯Haskell でそれなりのプログラムを書いてみようとしたので,HUnit や QuickCheck を使って BDD でやろうとしたのだけど,How to write a Haskell program 以上の事を誰も書いてないし,HUnit や QuickCheck の実例を書いた日語圏のブログ記事も,その単体モジュールのテストのみ書いていて,肝心の全体テストを通しで実行するなどのネタが書かれていない. じゃあ実際に公開してるリポジトリでも見てみるかと思い,patchtag を見ても今度は公開してる人の殆どがテスト書くとかしてなかった.Haskel

  • HaskellとテストとBDD - あどけない話

    Haskellでの BDD を実践するとどうなるかを考えるためのメモ。 型 豊かなデータ型とセクシーな型システムを持つ Haskell では、型が以下のような意味を持つ。 仕様 保守性の向上 簡単なドキュメント 設計図 BDD では、テストの用語ではなく設計の用語を使ってテストを記述する。だから Haskell で、まず型を書く習慣があれば、ある意味 BDD を実践していると言える。この感覚は、他の言語のプログラマには分からないかもしれない。 fromList :: Ord a => [a] -> Set a fromList = undefined このコードはコンパイルを通過するので、型に関する誤りがないことを確かめられる。 僕はへなちょこなので、型を先に書くこともあれば、後から書くこともある。 単純なコードはさっさと実装したい 型は GHC に推測させて、ghc-mod で自動挿入す

    HaskellとテストとBDD - あどけない話
  • Life Game - Jack日記

  • ansi-terminal @ GitHub

  • cabalコマンドの使い方 - あどけない話

    Cabal は Haskell のパッケージ管理システムです。枠組みとしての Cabal と、コマンドの cabal があり、間違いやすいです。 Cabal は、パッケージをコンパイルし、インストールする枠組みです configure, make, make install に相当 cabal は、パッケージの依存関係を調べ、必要なパッケージをダウンロードして、インストールするためのコマンドです cabal-install と呼ばれることもあります ここでは、コマンド cabal の使い方を説明します。 インストール 各 OS のパッケージ管理システムを使って cabal をインストールしましょう。GHC を扱っているパッケージ管理システムであれば、cabal にも対応しているはずです。 MacPorts では、以下のようにします。 % sudo port install hs-cabal

    cabalコマンドの使い方 - あどけない話
  • Google Groups

    Content unavailable Click here to try again. If you've seen this page more than once, try switching accounts.