1read 100read
2012年5月プログラム60: 関数型プログラミング言語Haskell Part18 (493)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
Cygwin + MinGW + GCC 相談室 Part 6 (718)
フリーの.NET統合開発環境「SharpDevelop」2 (260)
パR、パチスロの基盤のプログラム 2 (482)
おまいらのプログラムの勉強の仕方を教えろください (120)
【モダン推奨】Perlについての質問箱 50箱目 (193)
【至急】助けてください。 (237)
関数型プログラミング言語Haskell Part18
1 :12/03/16 〜 最終レス :12/05/30 haskell.org ttp://www.haskell.org/ 日本語サイト ttp://www.sampou.org/cgi-bin/haskell.cgi ttp://www.shido.info/hs/ 過去ログ 関数型プログラミング言語Haskell Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/ Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/ Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/ Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/ Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/ Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/ Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/ Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/ Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/ Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/ Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/ Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/ Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/ Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/ Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/ Part17 ttp://toro.2ch.net/test/read.cgi/tech/1325510368/
2 : 関連書籍 ・Introduction to Functional Programming Using Haskell (2nd ed.) ttp://www.amazon.co.jp/exec/obidos/ASIN/0134843460/ ・Haskell: The Craft of Functional Programming ttp://www.amazon.co.jp/exec/obidos/ASIN/0201342758/ ・The Fun of Programming ttp://www.amazon.co.jp/exec/obidos/ASIN/0333992857/ ・The Haskell School of Expression: Learning Functional Programming Through Multimedia ttp://www.amazon.co.jp/exec/obidos/ASIN/0521644089/ ・入門Haskell ttp://www.amazon.co.jp/exec/obidos/ASIN/4839919623/ ・ふつうのHaskellプログラミング ttp://item.rakuten.co.jp/book/4052963/ ・Programming in Haskell ttp://www.amazon.co.jp/exec/obidos/ASIN/0521692695/ ・Real World Haskell ttp://www.amazon.co.jp/exec/obidos/ASIN/0596514980 ・関数プログラミングの楽しみ ttp://www.amazon.co.jp/exec/obidos/ASIN/4274068056
3 : 関連リンク ・GHC Wiki ttp://hackage.haskell.org/trac/ghc/wiki/TitleIndex ・A History of Haskell ttp://research.microsoft.com/en-us/um/people/simonpj/papers/history-of-haskell/ ・関数型関連の用語集 ttp://sky.zero.ad.jp/~zaa54437/programming/concepts/ ・本物のプログラマはHaskellを使う ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/?ST=ittrend ・Haskell API search Engine ttp://www.haskell.org/hoogle/ ・Real World Haskell http://book.realworldhaskell.org/read/ ・Learn You a Haskell for Great Good! http://learnyouahaskell.com/chapters 【簡単な使い方】 1.検索バーに関数名を入れて検索 例 map 2.検索バーに型名を入れて検索 例 (a -> b) -> [a] -> [b]
4 : 関連書籍 つづき ・Haskell: The Craft of Functional Programming (3rd ed.) http://www.haskellcraft.com/craft3e/Home.html http://www.amazon.co.jp/dp/0201882957/ ・Learn You a Haskell for Great Good! http://learnyouahaskell.com/ http://www.amazon.co.jp/dp/1593272839/
5 : 乙
6 : HTTPサーバアプリケーションって、yesod が主流になるのでしょうか? Mightyってのがあった気がするんですが、廃れたのでしょうか
7 : HTTPサーバとか、メモリをどんどん食い尽くしてとんでもないことになる気がするんだけど、きちんとGCしてくれるのかな…
8 : HaskellのGCってJavaの足下にも及ばないの?
9 : Javaみたいにプロのベンダが作ってるわけじゃないしな…
10 : GHCのGCはすごくまともに動くと思う インクリメンタルGCとか凝ったものはないけど
11 : >>1 乙
12 : >>6 よく知らんが、ちょうど今月号のWEB+DB PRESS vol.67の濃縮還元オレンジニュースって記事には、"Haskellで書かれたWebフレームワーク「Yesod」のチュートリアル"というタイトルで初心者向けのチュートリアル記事を書いたと言う記事がある その中から引用する限りじゃ、Yesodは主要フレームワークの一つらしい 以下、記事を引用 Haskellの主要Webフレームワークには、Yesod、Happstack、Snapの3つがありますが、その中で比較的初心者が取り組みやすくコミュニティが活発なことからYesodを取り上げています。 ・ ・ ・ 中略 ・ ・ ・ HaskellのWebフレームワークがRailsやPHPはもとよりNode.jsよりパフォーマンスに優れていることを示しています。
13 : javaのtomcatみたいなものか…
14 : Yesod は Hello World を見ると初めギョッとするが、 考え方を理解すると、非常に洗練されてて理にかなっていることが分かる
15 : C 言語側で次の定義の関数 f をインポートする場合 enum EEE { EEE0, EEE1 }; void f (enum EEE x) { ... } Haskell 側では、次のようには「できない」ですよね data TTT = TTT0 | TTT1 deriving (Enum) foreign import ccall "f" g :: TTT -> IO () これは、関数 g の引数を CInt 型にするしか無いのでしょうか http://en.wikibooks.org/wiki/Haskell/FFI#Enumerations ここに、hsc ファイルで #enum マクロを使った列挙型の例がありますが、 これも結局は CInt を Haskell 側のスタブ関数の引数にしていますよね これって、rule gauss15 とかやらずに 100 とかリテラルを直接書いても コンパイルは通ってしまうので、型的に安全とは言えないと思うんですよ これは FFI で列挙型を含む外部関数を使う以上仕方のないことなのでしょうか 構造体は Storable クラスのインスタンスにすれば型的に安全に扱えるので、 列挙型も何かできるといいのですが
16 : hsc2hsは全然使ったこと無いから解らんが、 とりあえずnewtypeにしてんだから、データコンストラクタとアクセサ(例の場合ならIntegrationRuleとrule)をエキスポートしなけりゃ、 モジュールの外ではCIntとして扱えないんだから問題なくね?
17 : c2hsのenum defineルールを使った場合でも toEnum 100 :: IntegrationRuleした時に実行時エラー吐くのが関の山だな
18 : >>16 リンク先では、hsc2hs で作った Enum 型を 次のように使って C 言語側の関数に渡しています(途中省略しました) status <- c_qag gsl_f (realToFrac a) ・・・ (rule gauss) ・・・ errorPtr この c_qag gsl_f 関数は名前や使われ方から見て きっとどこかで foreign import されていると思いますが、 リンク先のページにはその定義は書かれていませんね しかし、おそらく c_qag gsl_f :: CFloat -> ・・・ -> CInt -> ・・・ のような定義だと思います(そうでなければ型エラー) これ、c_qag gsl_f (realToFrac a) ・・・ 100 ・・・ errorPtr のように使用しても型エラーにならずにコンパイルが通ってしまいますよね import された実際の C 言語側の関数で、不正な値の引数を検知して、 戻り値でエラーコードを返すような定義になっていればまだ良いのですが、 そうでなければ何が起こるか分からず、危険です Haskell 側でこの 100 というリテラルをコンパイル時にエラーとして検知できないか、 という趣旨の質問でした
19 : >>17 そうなんです たとえ私が >>15 で「できない」と言った方法が使えたしても、 Enum クラスのインスタンスでは toEnum 関数を使われてしまいます やはり、こういう時こそ Template Haskell の出番ですかね
20 : Yesod上でWordPressやEC-CUBEみたいなキラーアプリが出来るといいね WordPressは単に便利なだけでなくて、コードが抽象化されてなくてベタな設計なのが良くも悪くもサイト制作側で受けてる EC-CUBEはみんな泣きながらカスタマイズしてるけど、自作したら得られない決済系の実績があるから使ってる Yesod広めたいんなら、なんでみんなPHP使うのかにヒントがあるんじゃないかな?
21 : できるとしたら値から型、型から種の持ち上げを利用した 整数リテラルから型レベル整数、そしてそれに対応したインスタンスとしてtoEnumを定義したEnumを使うというものぐらいだな これならばコンパイル時にS (S (S ...))のインスタンスが見つからないという旨のエラーになる筈 これはリテラルとしてハードコーディングされた(コンパイル時に決まる)整数とそれ以外を区別するということでもあるのだが そんな機構があっても使いこなせる人は極少数にしかならんというのはC++のconstexprがいい前例となってるのであまり期待はできないな
22 : >>18 リンク先のImports and Inclusionsの項のソース見て欲しいんだが、 エキスポートされてるのはqag関数と定数 gauss15, gauss21...だけになってるじゃない? 本体のc_qag関数とか、IntegrationRule型のデータコンストラクタとアクセサはエキスポートしてないから、外からは使えない。 って、事は(IntegrateRule 100) とかリテラル渡すようなコード書けるのはモジュールの中だけだし、 qag関数に渡ってくるのは、基本的にエキスポートした定数のウチどれかしかありえないわけよ。 だから後はモジュールのテストを十分尽くせば、>15が思ってるような不安はない、って事を言いたかった。 モジュール内でもエラーになるようにしたい、っていうのが趣旨だったならまぁちょっとずれた回答だったかもしれんが。
23 : >>22 すいません、おっしゃってることの意味がようやく理解できました 趣旨を勘違いさせてしまったようです 私が訊きたいことは、FFI で列挙型を含む C 言語の関数を使う場合に、 関数に渡す値の範囲をその列挙型の中に限定する方法は無いか、 という事でした なぜなら、C 言語の列挙型の値は C 言語の int 型ですが、 Haskell の foreign import の型シグネチャで CInt を使うと、 列挙型の範囲を超えた値も構文上何も問題なく渡せてしまえるからです リンク先の記事を示したのは、hsc2hs の #enum マクロを使ったとしても、 結局のところアクセス関数が自動的に作成されるだけであって、 アクセス関数を使わなければその関数を使えない訳ではない、 だからその方法も今回の問題解決には使えない事を言いたかっただけでした 今のところ、foreign import の型シグネチャでは CInt 型を使い、 それとは別に、その関数を呼ぶだけの別名の関数を定義し、 そのシグネチャで C 言語の列挙型の値の範囲に対応したデータ型を使い、 後者の関数のみをモジュールから公開することで、 モジュールの利用者には範囲外の値が利用できないようにしています 確かに、このように余計な関数を定義しても、インライン展開されて、 実行速度上はほとんど何の問題もない筈ですが、けっこう無様です なにか別の案はないですかという趣旨でした とりあえず、上記の方法で我慢します
24 : おい前スレで指定の確率分布に従うランダムジェネレータが欲しいといったら 自分で作れとか言ってきた奴 staticパッケージという素晴らしいものがあったじゃないか 全く隠してやがったな
25 : http://www.amazon.co.jp/dp/4903814351/ せっかくこういう本もあるのだから、自作するのもいいと思うんだが
26 : staticじゃねーstatisticsじゃねーかちくしょう
27 : >>25 お前と違って研究費で落ちねえんだよ 高えよちくしょう
28 : >>27 私は地元の図書館で見つけました
29 : >>25 「この商品を買った人は」に、ちくま学芸文庫の甘利先生の本がでてきたのだが、 すごい装丁だw
30 : >>25 こんなニッチな本を誰が買うのかと思ったら機械学習系ブログがュしてました。 隠れた良書「計算機シミュレーションのための確率分布乱数生成法」を大ュしたい http://d.hatena.ne.jp/echizen_tm/20100710/1278781380 「計算機シミュレーションのための確率分布乱数生成法」でサンプリングのお勉強 http://d.hatena.ne.jp/echizen_tm/20100712/1278952192 計算機シミュレーションのための確率分布乱数生成法を買った http://d.hatena.ne.jp/tkng/20101107/1289118743
31 : これがステルスマーケッティングと言うやつか
32 : べつにステマと言われようがどうでもいいよ こういうのに興味ある人に、こんな本もあるのかと気づいてほしくて紹介しただけだから 興味が無ければ無視してくれればいい
33 : 嫌儲厨はほっとけ
34 : ライブラリリファレンスの右上の隠しリンク便利だな パッケージのモジュールが3画面分割で見易くなる
35 : 隠れてねーじゃん
36 : それよりも、フレーム表示から元に戻すリンクを教えてほしい
37 : >>35 俺IE6なんだ。。。
38 : IE6 ってもう葬儀を済ませたんだろ 安らかに眠らせてあげろよ
39 : Haskelってどんな人種がどんな目的で使うの?優しく教えて
40 : 個人的には、人種という言葉自体から差別的な響きを感じて使いたくないが、 目的の方でいうと、たとえば私の仕事場では単位時間辺りの 実質的な仕事の量と質を上げるために利用している 慣れというのもあるだろうが、初めから厳密な型を意識したプログラミングは、 そうでないCなどでのプログラミングと比較して、小さくて大量の(悩ましい)バグが、 コンパイルの段階で潰しやすく、実行時にはもっとアプリに本質的なバグの発見に集中できる 型推論の機能も、間違った型の使い方をコンパイル時に指摘してくれて助かってる また遅延評価のおかげで、一連の大きな計算において、 その計算を意味の塊を基準にして個々のモジュールに分割しやすい 主にこれら2点が実質的な仕事の量と質を上げるだろうと目論んでHaskellを使い始めたが、 目的は見事に達成されている ちなみに、たまたま私の部署は処理時間の短縮や計算リソースの削減を 厳しく求められるアプリを作るところではないため、Haskell のデメリットは表に出にくい
41 : Haskell -> C のトランスレータってないですかね?
42 : >>41 GCC がそれをやってくれる
43 : >>41 ghcのコンパイラオプションでCのコード吐けるけど?
44 : す GCC じゃなくて ghc だ
45 : Perlで書いたコードは二度と見たくない Haskellでコンパクトに書けたコードはまた見てみたくなる Haskellは書くときにうんざりする 多言語は書いた後で絶望する
46 : 要素数 n のリストが一つ与えられた時、 要素番号の重複を認めない m (0 <= m <= n) 個の要素からなる組み合わせを 全て集めたリストを作るのって、効率よくエレガントにやろうとすると意外に難しいな とくにエレガントさって、自分でなかなか納得いくものができんよね comb :: Int -> [a] -> [[a]] comb 3 [1,2,3,4] ==> [[1, 2, 3], [1, 2, 4], [1, 3, 4], [2,3,4]]
47 : SICPで見たような気がするけど気のせいか
48 : ベタに実装したbinary counting以上簡単にはならないと思う
49 : リストで縛るとどうあがいても遅そうだな。 要素リストは配列にぶち込んどいて、 インデックスの組み合わせ生成して列挙すんのがベターかね。
50 : let comb n xs = if length xs == n then [xs] else concatMap (\i -> comb n $ delete i xs) xs こういう感じ?
51 : 重複を含む配列からの組合せは? ABBCDDDEFFGGGG から5個選ぶ時の組合せを全て列挙せよ みたいな 重複を許したものを吐き出してフィルターかけるのはもちろん駄目 重複が無い配列の時の組合せを応用してできるの?
52 : >>51 俺が取り組んだのは、元のリストは要素の対して重複を許し、 そこから選ぶ要素番号に対しては重複を認めないタイプの問題だった たとえば、元のリスト xs から 3 つ選ぶ場合、 [xs !! 0, xs !! 3, xs !! 8] は許されるけど、 [xs !! 0, xs !! 3, xs !! 3] は認めない まだ取り組んではいないけど、重複を許した方が多少記述が減るんじゃないかな
53 : AAAAAAAAAAAAAAAAA `comb` 3 だと酷いことになる 重複するリストから組合せ取り出す局面がどれほどあるか判らないけど
54 : アナグラム作成装置として使えそうだね。
55 : let mapcon f xs = concatMap (\i -> f $ drop i xs) [0..length xs -1] let comb n xs ys | length ys == n = [ys] | xs == [] = [] | True = mapcon (\(z:zs) -> comb n zs $ z:ys) xs もうあんまりエレガントとも思えないけど
56 : 自分で作ったのは、こんな感じ tails' :: [a] -> [[a]] tails' [] = [] tails' [x] = [[x]] tails' xs = xs : tails' (tail xs) comb1 :: [a] -> [[a]] comb1 xs = map (:[]) xs combN', combN :: ([a] -> [[a]]) -> [a] -> [[a]] combN' f (x:xs) = map (x:) (f xs) combN f xs = concatMap (combN' f) (tails' xs) comb :: [a] -> Int -> [[a]] comb xs n = (iterate combN comb1 !! (n-1)) xs 使用例 comb [1,2,3,4,5] 3 ==> [ [1,2,3], [1,2,4], [1,2,5], [1,3,4], [1,3,5] , [1,4,5], [2,3,4], [2,3,5], [2,4,5], [3,4,5] ] n重ループを分解した感じ 自分で書いたコードだが、なんか自分でムカツク
57 : >>56 あれ、一つ前のバージョンをコピペってしまった tails' は init . tails で、定義しないで直に使ってます 結局こんな感じ comb1 xs = map (:[]) xs combN' f (x:xs) = map (x:) (f xs) combN f xs = concatMap (combN' f) (init $ tails xs) comb xs n = (iterate combN comb1 !! (n-1)) xs
58 : combination だけはポインタある方が楽だわ
59 : comb 0 _ = [[]] comb _ [] = [] comb n (x:xs) = map (x :) (comb (n-1) xs) ++ comb n xs どうしてもってんならlength xsを最初に数えて持ち回せ。
60 : >>59 美しいですね こういうセンスあるコードがスラスラと書けるようになりたい
61 : (x :) ストライクウィッチーズのあの人に見えた
62 : (;x;)
63 : (:[]) ← 口を開けた顔; データを1つ食べて内容物のリストを返す
64 : 書籍「関数型プログラミングの楽しみ」の練習問題 3.1 を考えてみました これが非正格関数 h に対しては成り立たないのは、 h が実際にどのような関数なのか定義が分からないことには変換が進まないからでしょうか 例えば xs = Nil とした場合でも、 (h . foldL f e) xs --> h (foldL f e xs) --> ・・・ h を何に変換すれば良いのか不明 ・・・ もし h が正格関数なら、ここで --> h (foldL f e xs) --> h (let g zs = case zs of Nil -> e; Cons y ys -> f y (g ys) in g xs) --> h (let g zs = case zs of Nil -> e; Cons y ys -> f y (g ys) in g Nil) --> h e --> e' と変換が進む もちろんこの場合は foldL f' e' からの逆方向の変換もできて等号が成り立ち、 また xs = Cons y ys の場合も構造的帰納法で等号が成り立つことが証明できる 非正格関数 h に対しては、h から先に評価しなければならず、 例えば極端な話 h = h では一向に簡約が進まなくなるから成り立たない場合もある という理解で良いでしょうか
65 : hの正格性が必要なのは以下の等式が必要だからでしょう q (case e of { p1 -> e1; ... pn -> en }) = case e of { p1 -> q e1; ... pn -> q en }
66 : すいません、けっこう混乱しています それは、単に問題文を言い換えただけではないのですか? 結局 >>65 の場合も「なぜ q が非正格関数だとその等式が成り立たないのか」 を説明しないと練習問題 3.1 を説明したことにはならないような気がするのですが
67 : xs := ⊥ で両辺計算してみな
68 : 64じゃないけど、 foldL f' e' ⊥ = ⊥ foldLは第三引数について正格な性質を持ってる。 ところが、例えばh = const xで非正格な関数とすると (h . foldL f e) ⊥ = x だから、h . foldL f e = foldL f' e'の融合則が成り立つには hは正格関数でないといけない、ってことかな?
69 : Haskellを新しく勉強しようと、 まず日本語マニュアルhrefのインストールを下のサイトを参考に 「Haskellのリファレンスマニュアルを検索するツール href」 http://d.hatena.ne.jp/pcmaster/20090215/p2 $ make $ mkdir -p /usr/local/share/href $ export HREF_DATADIR=/usr/local/share/href $ make bindir=/usr/local/bin install $ sudo mkhref ref/* mkhref: HREF_DATADIR: getEnv: does not exist (no environment variable) このエラーが出て、ここから先に進めません。 こちらの環境はubuntuでghc7.0.3、libghc-network-devのパッケージがインストール済みです。 getEnv関数が手持ちのパッケージでは用意されていないのでしょうか、環境変数の与え方は大丈夫でしょうか どなたかインストールできない原因分かりましたら教えていただけるとありがたいです
70 : 漏れもハスケるためにう分津にGHCとか入れて準備万端だぜ
71 : >>69 sudoでmkhref ref/*したときに、 export HREF_DATADIR=/usr/local/share/hrefが効いてないと思う。 それと、ubuntuって/usr/local/share/href が一般ユーザで作れるのかね? make instalもスーパユーザでやる必要があると思う。 適当にやるならこんな感じか。 $ make $ sudo bash # mkdir -p /usr/local/share/href # export HREF_DATADIR=/usr/local/share/href # make bindir=/usr/local/bin install # mkhref ref/* おわったらスーパユーザを抜けること 使うときもexport HREF_DATADIR=/usr/local/share/hrefが有効になるよう、 ~/.profileかどっかに書いておく。
72 : >>71 Haskell とは何の関係もないが、 $ sudo bash これやるくらいなら $ su - でいいと思うんだが
73 : >>72 su - だと、cdしなおさないといけないじゃん。 まあ、suだけにすればいいかもだが、rootのパスワードはなるべく入力したくないな。
74 : sudo -s はどう?
75 : スーパユーザになれれば何でもいいだろw >>69 は良く分かってないみたいだから、suでrootのパスワード入力させとくのが確実 sudoは設定ちゃんとしてないとうまく動いてくれないかもしれない まあ、でも、sudo mkhref ref/* が一応実行されてるみたいだから、たぶんsudo -sでもsudo bashでもいいかな
76 : sudo -E でしょ
77 : Control.Exception に bracket 関数があるけど、 これって第1引数のアクション(イニシャライザ)で例外が発生しても、 第2引数のアクション(ファイナライザ)は実行さないよね bracket 関数と同じ形で、 イニシャライザで例外が発生してもファイナライザが実行される関数は 標準ライブラリで用意されてるの? それとも自作する必要がある? 同じ形というのは、イニシャライザの戻り値が ファイナライザやコンピュテーションの引数として利用できるという意味
78 : 初期化が終わってないのにファイナライズとな…?
79 : >>78 あぁそうか 言われてみれば設計がおかしいな・・・ 見直してみるよ ありがと
80 : yesodの中の人がcabalの代わりのcabalaって記事出してたけど、 あれエープリルフールなんか?
81 : cabal は実際に改善点が少なくないわけで、 エープリルフールならもっと分かりやすいネタにして欲しいもんだ
82 : yesodくらいは、もうはじめからHaskellプラットフォームに入れておいてほしい
83 : >>82 なんで?
84 : >>83 スタンドアロン環境で使いたいから
85 : yesodにcabalaでゆだやんってよく分かるんだけど、宗教色が強いのは ちょと苦手かも。CLISPも同じなんだがな。
86 : >>84 なんだよ、それなら Haskell Platform に hmatrix 入れろよとか、 yamapa 入れろよとか、wx や gtk2hs 入れろよとか、iteratee 入れろよとか そういう単なる「〜だったらいいなぁ」というチラ裏と変わらんじゃん いや、べつにそういうのがダメとは言わないけど、 もう少し Haskell 全体を考えたり、 もう少し本質的なことから論理的に導き出した要望かと思って期待してた
87 : そう言えば、久々に yampa がバージョンアップしたな
88 : >>87 ホントだ。 でもAnimasの改良取り入れただけかな? コメントは書いてんのに、ドキュメントのスカスカっぷりは相変わらずゆがみねぇな…。
89 : >>86 「Haskell 全体を考えたいなぁ」もチラ裏と変わらない
90 : プログラミングHaskell とかゆー本買って来たぜ 今夜から枕の下に敷いて勉強する これで漏れも立派なハスケラーだ
91 : 「プログラミングHaskell」って教科書としては優れてるとおもうけれど、 自習書としてはどうなんだろう。 新しい構文とかがけっこう説明なしにでてくるよね。 まあ文法は別の本で見ればいいのか。 あと8章が……
92 : >>91 パーサーは難しいけど、モナドと同じで動かしてみないと、どういう働きか実感できない所があるな ふつケルでも結局Wiki作る時に書かされるから、この本だけの特別ではない (初心者置いてきぼりにしないように頑張ってる分だけプログラミングHaskellの方が親切ではある)
93 : HaskellWikiを流し読みしてると色々面白そうなプロジェクトを見つけるのだけれど、 ほとんど開発が止まっているように見えるのは何故だろう
94 : 他の言語と違って研究の類いも含まれてるからね。 大学の研究ならほとんどが死んでいるプロジェクトで当然。 卒業したら放置なものが多いから。 これには悪い面もあるが、常に新しい風が吹き込む理由にもなってる。 そういうことも理解して使いこなしたほうがよい。 HaskellWikiも単なる道具に過ぎないのだから。
95 : そのまま枯れたものとして扱っていいものもあると思うよ。 常に更新されている方がいいとも限らないのでね。 依存関係でおかしくなってるものを放置されてると困るけどね。
96 : みんなHaskellに飽きたんだよ
97 : ghc7.2から[リスト内包表記]をモナドにも使えるようになったんだね 有用な使い道を教えてくれ
98 : 対角版リストモナドなんかも内包表記で書ける、とか
99 : 論理プログラミングDSLを自作モナドで簡単にかくためのもの
100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
36歳のオッサンがC言語を始めたいのだが・・・ (903)
Rubyについて(アンチ専用) Part004 (723)
スレ立てるまでもない質問はここで 119匹目 (156)
制御系なら俺に聞いてもいいぜ(10) (489)
【モダン推奨】Perlについての質問箱 50箱目 (193)
Python の宿題ここで答えます Part 2 (323)
--log9.info------------------
何で男子高校生はガリガリなのか? (236)
ジャージ上下姿ってカコイイ。 (101)
運動音痴は体育祭・運動会に出るべきか? (777)
“スポーツ至上主義”を粉砕せよ! (108)
バットもろくに振れない奴ってなんなの? (207)
逆立ちができたことがない (181)
運動音痴だけどこれだけは得意 (939)
だけどスポーツウェア(グッズ)に惚れる人 (330)
サッカー部って性格悪いやつ多いよな 勝ち点3 (806)
運動音痴だけどウォーキングをやってる香具師の数→ (150)
運動音痴だから、TVゲームも運動音痴 (281)
【五七五】体育の苦手な人が綴る川柳・狂歌【七七】 (428)
今日はおまえが審判やれ→ヽ(`Д´)ノできねぇよ (103)
【鉄棒】きかい運動が苦手【マット】 (143)
運動音痴だけど筋肉鍛えまくってる香具師の数→ (308)
めざせ100! ボウリングが上手くなりたい (183)
--log55.com------------------
5種目だけをやるとすれば何がいいのか?3
やっぱり筋肉より今はファッションだろ
ダンベルカール20kgを目指すスレ5
手首が細くて高重量扱えるマッチョっているの?
初めてやるベンチってどのくらい上がる?
肩強化】ミリタリープレスPart.3 【重量追求!
【ビッグフェイス?】紋吉2【イケメンフェイス?】
筋トレでカーボパウダーを摂る奴はアホだからな?