約 4,437,853 件
https://w.atwiki.jp/knenethaskell/pages/11.html
haskellはプログラミング言語の1つだね。 プログラミング言語というと、CやC++、JAVAなんかが有名だけど、なぜhaskellを使うのだろう? それはhaskellが純粋関数型言語であり、最新の技術が取り入られた新しい言語だからなんだ。 実際に何が違うのか、詳しい説明は余所に譲るとして、簡単な説明をしてみよう。 よく使われる例がこれ。 Quicksort in Haskell qsort [] = [] qsort (x xs) = qsort (filter ( x) xs) ++ [x] ++ qsort (filter ( = x) xs) Quicksort in C void qsort(int a[], int lo, int hi) { { int h, l, p, t; if (lo hi) { l = lo; h = hi; p = a[hi]; do { while ((l h) (a[l] = p)) l = l+1; while ((h l) (a[h] = p)) h = h-1; if (l h) { t = a[l]; a[l] = a[h]; a[h] = t; } } while (l h); t = a[l]; a[l] = a[hi]; a[hi] = t; qsort( a, lo, l-1 ); qsort( a, l+1, hi ); } } from Introduction - HaskellWiki 極端な例だけど、こんな風にCでは複雑なプログラムを簡潔に書ける。 簡潔に書けると何が良いのか。 スペースを取らないだけでなく、意味が分かりやすくなる。 エラーが起きたときに確認する部分が減る。 なんとなく簡単な気がする。 これがhaskellを使う理由なんだ。見通しがいいということが、大事なキーワードだ。 では、問題はないのかというと、もちろんある。 なんでこんなに簡潔に書けるかということに、直接関わってくる。 一つは、多数の理論が取り入れられていること。 日本語に漢字があるから、他のそうでない言語より字の数を減らせるように、haskellも記述方法が色々あるので、簡潔な記述が可能になる。 もちろん、上手く書くには、それぞれの理論を学ばなくてはいけない。 もう一つは処理速度や消費メモリの問題。Cは実行することを直接書いている。だから、記述がくどくなるけど、処理速度は速いし、メモリも無駄に使わない。 Haskellは簡潔な書き方に出来る代わりに、コンピュータの処理は最適にはならない。 こんな感じで取っつきにくい部分もある。要は方向性の問題なんだ。 Haskellは新しいことをするのに向いている。Haskellでプログラムを書いていれば、そのうち最適な理論が分かってくる。 どうしても実行速度が足りないときは、その部分をCで書き直せばいいのだ。 というわけで、プログラミングの上達のためにHaskellを探求してみよう。 次はとりあえず、処理系を導入するで。
https://w.atwiki.jp/kenichiro90/pages/15.html
Haskellの解説 まったく考えていません。誰か書いてください...
https://w.atwiki.jp/nanakoso/pages/4.html
Lha展開関数が動いたんで 喜び勇んで公開することにしました。 コレ→Haskell版Lha展開ライブラリ とりあえず問題点 遅い(律儀に1ビットづつハフマン木を辿ってる) スライド辞書がスライドしてない エラー処理がない。 2番目は64Kとかの配列を使い捨てしてるんだけどListで十分だったかも。でかい辞書あっても使うのはほとんどが最新に近いところだけっぽいし。 3番目は実用上致命的。 アプリに組み込んで変なファイル食わせたら アプリごとerrorで落ちる。 Errorモナド使えばよさげなのはわかるんだけど 可変ビットの切り出しでもうStateモナドつかってるんだよね。 二つ以上モナドを同時に使う方法が全然わからないよ。 このへん使うんだろうけど>モナド変換子 以下つづく。 参考サイト LHA for UNIXとLhaのファイルヘッダの解説。 http //www2m.biglobe.ne.jp/~dolphin/ LHAで使ってるLZ77(スライド辞書)とハフマン木の説明とか http //www.01-tec.com/document/basic_compression.html このページで公開するソフトウェアのバイナリやソースコードのライセンスはすべてクリエイティブコモンズのアトリビューション(帰属)ライセンスとさせていただきます。
https://w.atwiki.jp/yuichi0619/pages/18.html
純粋関数型言語haskellについて the haskell school of expression(2008/01/21) これでhaskellの勉強?しているが、GUIライブラリの導入に苦労する。 macOSX編。 とりあえずは、ghcが必要。MacPortsで入れたいが俺のIntelmacだとエラーが出る。 仕方ないのでGHCのサイトへ行き、Ver.6.8.2のバイナリを取ってくる。時間はかかるがLeopardも対応してるのでインスコ完了。 次に公式サイトより、The latest SOE source codeとThe GLFW package on which it dependsを落としてくる。 GLFWの方を解凍したら、 runhaskell Setup.hs configure runhaskell Setup.hs build runhaskell Setup.hs install を実行。 次にSOEの方を解凍して、SOE/src内でコンパイル。 ghc -c -fffi EnableGUI.hs そうしてghciを実行。 Prelude l EnableGUI Prelude EnableGUI a Fal.lhs *Fal m +EnableGUI *Fal EnableGUI enableGUI test ball1 とかやると、テストできたー。 これだけのこと理解するのに苦労した。 英語苦手なのは辛い。 Gtk2HsやwxHaskellを入れようとしてたけど、公式サイトのソースに必要な物は入ってるからいらなかった。 英語を読めって話やね。 素数の無限リスト(2007/06/24) primeInf = hoge [2..] where hoge (x xs) = x hoge [y | y - xs , mod y x /= 0] 二行で書けるなんてすごいなぁ
https://w.atwiki.jp/kenichiro90/pages/13.html
このページの概要 このページでは、Wikibooksに掲載されているHaskellに関する文章を和訳していく予定です。以下の文章は、Haskell-Wikibooksを和訳したものです。 Haskell 型を持った関数型プログラミング言語 Haskellは、関数型プログラミング言語です。以前にプログラミングをしたことがあり、Haskellがどのように動作し、ほかのプログラミング言語とどのように異なっているのかということを少しでも知りたいならば、概要を見るとよいでしょう。 Haskellがユニークな言語である理由は2つあります。1つ目は、Haskellは"純粋な"関数型であるということです。もし、関数を作成し、同じ引数で異なる2つの場所に2回呼び出すと、正確にまったく同じ時間に同じ値を返すでしょう。2つ目は、Haskellにより、タイプクラスのような機能を組み込み、代数的なデータタイプを生成するといった、非常に近代的なタイプのシステムを提供されることです。私たちは、今、これらの意味することをこの文章を読んでいるあなたが理解できると期待していません。しかし、この本を読み終わるまでに、舌の上でこれらのことを滑らかに転がすように、十分に理解できることを願っています。では、なぜHaskeller達はこの言語を好きになったのでしょうか?それは、ただ単にユニークで近代的なものを使いたいからでしょうか?いいえ違います。Haskellプログラマー達は、彼らの仕事を楽しいと思うからです。なぜなら、純粋な関数を扱うことは、私たちのプログラムをより理解しやすいものにし、それらが正しいことを証明してくれるからです。それに加えて、発展的なタイプのシステムを構築するときに、愚かで且つ重大な間違いを見つけるのを助けてくれます。 この本では、Haskell言語の非常に基礎的な部分から最も発展的な機能と一般的なコンピュータプログラミングの両方を紹介することが目的です。経験豊富なプログラマ達にとっては、この過程においては、とりわけ我慢を強いることでしょう。はじめのうちは、あなたが最も慣れ親しんだプログラミング言語とHaskellはかなり異なっていて、慣れ親しんだ言語のためにHaskellがどのように働くのかということを理解することが難しくなるかもしれません。言い換えると、Haskellの動作自体は単純ですが、ほかの言語とは異なっています。だから、関数型プログラマ達の複雑で且つ数学的な思考過程を通してプログラミングを見ることを、まったく異なった世界全体を冒険することのように扱いましょう。 概要 この本は3つのセクションに分かれています。つまり、初心者コース、上級者コース、そして実践的なHaskellです。最後のセクションは、日常の問題をカバーするように、また、初心者コースの簡単な知識があれば読むことができるように書かれています。 どうか、記事を投稿してください。Haskellをどれだけ使いこなしているかにかかわらず、誰でも投稿することができます。5分時間をかけてモジュールを改善すると、誰かの持つ数時間分の時間を守ることができます。投稿のための記事を参照してください。 初心者コース このセクションでは、Haskellの非常に基礎的な部分と最も頻繁に使われるライブラリのいくつかを紹介します。また、簡単なプログラムを作成できるようになります。そして、上級者コースへと準備をします。 Haskellの基礎 はじめに 変数と関数 リストとタプル 次の段階 基本的な型 簡単な入出力 型の宣言 初歩的なHaskell 再帰 パターン照合 リストについてより詳しく 構造体を制御する リスト処理 より複雑な関数 高度な関数 中級的なHaskell モジュール 字下げ より複雑なデータ型 クラスの宣言 クラスと型 状態の跡をたどる モナド モナドを理解する 発展的なモナド 付加的なモナド モナド変換子 実践的なモナド
https://w.atwiki.jp/dasm/pages/4.html
↑ トップページ? Haskell Subpage Haskell/Introduction Haskell/Cygwin Haskell/Metalinks Haskell/Pugs Official The Haskell Home Page News The Haskell Sequence - News about Haskell Workshop 2005 Haskell Workshop Perl autrijus - use Perl User Pugs perlcabal perl.com A Plan for Pugs autrijus User information -- autrijus User Haskell - 結城浩
https://w.atwiki.jp/funf/pages/18.html
参考サイト Haskell やさしいHaskell入門 Haskellで遊ぶ About Haskell
https://w.atwiki.jp/sevenlives/pages/2570.html
関数型言語 参照透明性? GHC? GHCi? runghc? Cabal? Haskell-platform?
https://w.atwiki.jp/asato/pages/85.html
GLUT 文献 Push-pull functional reactive programming, Haskell Symposium 2009 A Tutorial on Parallel and Concurrent Programming in Haskell , 2008 A Haskell Hosted DSL for Writing Transformation Systems, IFIP Working Conference on DSL 2009 GPU Kernels as Data-Parallel Array Computations in Haskell, EPAHM 2009 Combinator Parsing A Short Tutorial, TR 2008 On Feature Orientation and Functional Programming, TR 2008 Type Checking with Open Type Function, ICFP 2008 Harnessing the Multicores Nested Data Parallelism in Haskell, FSTTCS 2008 Making Monads First-class With Template Haskell, Haskell 2008 ADL Haskell as an Architecture Description Language, TR 2008 資料 Classes, Jim, but not as we know them Type classes in Haskell, ECOOP 2009
https://w.atwiki.jp/hgsk/pages/26.html
Haskell 評価戦略 先行評価(JavaScript) var ELSE = 0;(function(a, b, c){ return a ? b c;})(true, 1, ELSE=1+1);ELSE; // 2 遅延評価(JavaScript) var myif = function(_cond, _then, _else){ return _cond() ? _then() _else();};var fact = function(n){ return myif(function(){ return n = 1 }, function(){ return 1 }, function(){ return n * fact(n-1) });}fact(10); http //blog.livedoor.jp/dankogai/archives/50996734.html