関数型プログラミング言語Haskell Part12
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/04/29(木) 19:15:28ttp://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/
・2chの仕様により、行頭の半角スペースは表示されません。
コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
0002デフォルトの名無しさん
2010/04/29(木) 19:19:18・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
0003デフォルトの名無しさん
2010/04/29(木) 19:20:530004デフォルトの名無しさん
2010/04/29(木) 19:24:23・関数型言語Part5
ttp://pc12.2ch.net/test/read.cgi/tech/1252470706/
・【数学者】Haskellはクソ言語【オナニー】
ttp://pc11.2ch.net/test/read.cgi/tech/1128011645/
・純粋関数型言語Concurent Clean
ttp://pc11.2ch.net/test/read.cgi/tech/1075629340/
・関数型言語ML (SML, OCaml, etc.), Part 6
ttp://pc11.2ch.net/test/read.cgi/tech/1245017721/
・Lisp Scheme Part30
ttp://pc12.2ch.net/test/read.cgi/tech/1270897776/
・【入門】Common Lisp その7【質問よろず】
ttp://pc12.2ch.net/test/read.cgi/tech/1270370267/
・Emacs Lisp 3
ttp://pc11.2ch.net/test/read.cgi/tech/1191875993/
・【Lisp】プログラミング言語 Clojure【JVM】
ttp://pc12.2ch.net/test/read.cgi/tech/1255533519/
0005デフォルトの名無しさん
2010/04/29(木) 19:25:57ttp://pc12.2ch.net/test/read.cgi/tech/1186030985/
0006デフォルトの名無しさん
2010/04/29(木) 21:31:28Haskell: The Craft of Functional Programming
The Haskell School of Expression: Learning Functional Programming through Multimedia
The Haskell Road To Logic, Maths And Programming
洋書で分かりやすいのってどれですか?
0007デフォルトの名無しさん
2010/04/29(木) 21:35:360008デフォルトの名無しさん
2010/04/29(木) 21:41:11http://www.haskell.org/haskellwiki/Tutorials
この辺ですね? ↓とか楽しそう
http://learnyouahaskell.com/
0009デフォルトの名無しさん
2010/04/29(木) 21:55:18こここんなに人いたんだな
0010デフォルトの名無しさん
2010/04/29(木) 22:06:380011デフォルトの名無しさん
2010/04/29(木) 22:11:08あれはわかりやすいから普及したんだよ。
0012デフォルトの名無しさん
2010/04/29(木) 22:21:02まだやんのかw
>>7-8
ビデオも良いね
http://www.haskell.org/haskellwiki/Video_presentations
0013デフォルトの名無しさん
2010/04/29(木) 22:45:51分かりやすいの意味が分かりにくいが・・・
Craft の方は王道というか、全く持って普通の Haskell 本。
比較的広いトピックを丁寧に解説している。
教科書的で基礎がしっかり学べるから入門に良いと思う。
School は(ほぼ)グラフィックス処理を題材に
関数プログラミングのテクニックを解説している感じ。
だいたい、奇数章でテクニックの本質みたいなのを解説して、
偶数章でそれをグラフィックス処理に応用するみたいな。
ストリーミングの解説辺りから FRP が題材に出てきて面白い。
最後の方にロボット制御や音楽などが題材に出てくる。
Road は知らん。
PDF で読めるヤツとは違うものなんかな
0014デフォルトの名無しさん
2010/04/29(木) 23:24:36おっと、肝心の質問に答えてなかったな。
私にとっては Craft と School は理解し難くはなかった。
School の方が説明を端折ってる感は若干あった。
0015デフォルトの名無しさん
2010/04/29(木) 23:30:030016デフォルトの名無しさん
2010/04/29(木) 23:35:09> Haskellより
意味が分かりません。
明瞭な言葉で語ってください。
0017デフォルトの名無しさん
2010/04/29(木) 23:56:23Haskell でのプログラミング中に起きた問題の解決よりも、とか、
Haskell でプログラミングすることよりも、
という様な感じの意味だろ。
それくらい文脈を考慮して察してやれよ。
0018デフォルトの名無しさん
2010/04/30(金) 00:04:03THX
Craftかなとも思いますが、>>7のいうようにネット上のチュートリアルとか
リファレンスをまず漁ってみます
0019デフォルトの名無しさん
2010/04/30(金) 00:59:54もちろん練習も必要だが、その前にインプットだろ
0020デフォルトの名無しさん
2010/04/30(金) 01:01:46Craftは来年に新版が出る、かもしれない
0021デフォルトの名無しさん
2010/04/30(金) 01:08:03推薦図書スレへ帰れ
0022デフォルトの名無しさん
2010/04/30(金) 01:10:060023デフォルトの名無しさん
2010/04/30(金) 01:24:340024デフォルトの名無しさん
2010/04/30(金) 02:18:23どの人?
0025デフォルトの名無しさん
2010/04/30(金) 02:30:28知りたい項目を目次で調べてそのページを開いても、その章の始めの方の分かりづらい例題を理解して、さらに章をまたいで読まないといけない。
例えば「Doc」を調べようとして目次を開いたら267ページが出るけど、Docの説明があるのは結局117〜127ページで、JSONの例題の説明とPrettifyの説明も読まなければならない。
個人的には、この本じゃなくHaskellについてのことだけど、CやJavaから入った人には、やっぱり変数と関数がごっちゃになってるのは分かりにくい。
229ページの最後の行の liftP q f k w x y z とかシグネチャとの対応がどうなってるのか本を何分かにらまないと理解できない。
本が悪いというより、ただ単に、本をさくさく読みたい人向けの本じゃないってだけの話。
0026デフォルトの名無しさん
2010/04/30(金) 04:00:36・今のPHPを作ったのは、何十人もの開発者ですよ。私は1人目の開発者だったに過ぎません。
・問題を解くのが好きなだけで、プログラミングは大嫌いです。
・いかにプログラミングを避けるかを考えていたら、コードを再利用するためのツールとしてPHPができました。
・PHPは、歯ブラシみたいなものですね。毎日使うものですけど、だから何でしょう?誰が歯ブラシの本なんて読みたがります?
・パーザを書くのは苦手です。本当にダメなんです。今でもね。
・PHPには「protected属性」も「仮想メソッド」もありますよ。情報学科の教官が「重要だ」っていうやつは何でもね。僕自身は、こんなものどうでもいいと思ってますけど。
・プログラミングを好む人がいるのは知ってますが、全く理解できないですね。
・僕はホンモノのプログラマではありませんから、やっつけ仕事ですよ。ホンモノのプログラマは、「動いてるように見えるけど、メモリリークだらけじゃないか。直す必要があるかもね」なんて言うでしょう?僕なら、10リクエストごとにApacheを再起動しますね。
・いえ、メモリリークはちゃんと気をつけてますよ。でも、プログラミングってほんとクソだなと思いますね。
・プログラミング言語を作るつもりはありませんでした。どうやって作るのかも知りませんし。論理的に必要だと思われるものを足していっただけなんです。
・僕の発言に怒ってる人がいるようですね。僕がプログラマとしてひどいのは認めますけど、でも、多分あなたたちよりマシだと思いますよ(笑)。
0027デフォルトの名無しさん
2010/04/30(金) 05:40:06同意できるな
Haskellプログラマは最適化なんて興味ないだろ
仕様を記述できればいい
0028デフォルトの名無しさん
2010/04/30(金) 05:47:16GHCを作ったのも多数の開発者だな。
>・問題を解くのが好きなだけで、プログラミングは大嫌いです。
まさしくHaskellだな。
>・いかにプログラミングを避けるかを考えていたら、コードを再利用するためのツールとしてPHPができました。
Haskellは再利用性が高いな
>・PHPは、歯ブラシみたいなものですね。毎日使うものですけど、だから何でしょう?誰が歯ブラシの本なんて読みたがります?
Haskellの本は少ないな
>・パーザを書くのは苦手です。本当にダメなんです。今でもね。
Parsecか
>・PHPには「protected属性」も「仮想メソッド」もありますよ。情報学科の教官が「重要だ」っていうやつは何でもね。僕自身は、こんなものどうでもいいと思ってますけど。
Haskellにはプログラミング言語の研究者が重要だという奴は何でもあるな。
>・プログラミングを好む人がいるのは知ってますが、全く理解できないですね。
理解できないな
>・僕はホンモノのプログラマではありませんから、やっつけ仕事ですよ。ホンモノのプログラマは、「動いてるように見えるけど、メモリリークだらけじゃないか。直す必要があるかもね」なんて言うでしょう?僕なら、10リクエストごとにApacheを再起動しますね。
俺の書いたHaskellプログラムもやっつけ仕事だな。スペースリークだらけだがnが小さいので問題ない
>・いえ、メモリリークはちゃんと気をつけてますよ。でも、プログラミングってほんとクソだなと思いますね。
同意だな
>・プログラミング言語を作るつもりはありませんでした。どうやって作るのかも知りませんし。論理的に必要だと思われるものを足していっただけなんです。
俺もHaskellがあれば作る必要はないと思う
>・僕の発言に怒ってる人がいるようですね。僕がプログラマとしてひどいのは認めますけど、でも、多分あなたたちよりマシだと思いますよ(笑)。
まあ、Javaしかできない人よりはましだな
0029デフォルトの名無しさん
2010/04/30(金) 06:42:050030デフォルトの名無しさん
2010/05/01(土) 22:51:000031デフォルトの名無しさん
2010/05/01(土) 23:09:190032デフォルトの名無しさん
2010/05/02(日) 10:56:37余データ==プログラム
という意味合い?
0033デフォルトの名無しさん
2010/05/02(日) 12:03:280034デフォルトの名無しさん
2010/05/02(日) 12:33:18興味ある
0035デフォルトの名無しさん
2010/05/02(日) 14:05:03なんでそれがリストモナドとかと関係するのか全くわからなかったけど。
0036デフォルトの名無しさん
2010/05/02(日) 14:28:43データの双対
0037デフォルトの名無しさん
2010/05/02(日) 14:58:55ごめん、まだ分かんない・・・
ググってもなかなかそれらしい記事に当たらないし(キーワードがまずいのか)。
codata が class に相当するのだとしたら、data は何に相当するの?
そしてそれらは、どのような事柄に関して双対関係があるの?
0038デフォルトの名無しさん
2010/05/02(日) 15:14:27>そしてそれらは、どのような事柄に関して双対関係があるの?
それこそ自然な同型になるようにするためだろう。
じゃないと取り扱いづらいし双対関係作る意味がないと思う。
0039デフォルトの名無しさん
2010/05/02(日) 15:16:130040デフォルトの名無しさん
2010/05/02(日) 15:47:45質問の仕方が悪かったかも。
Wikipedia によると、双対は
2つの対象がある意味で互いに「裏返し」の関係にあるというようなニュアンスがあるという。
これを踏まえて2つ質問があります。
・今回の件(Haskell)において、2つの対象の一方は class ではないかと意見が出た。
ではもう一方は何に相当するのか。
・ある意味で互いに裏返しの「ある意味」というのは、
今回の件(Haskell)では何に当たるのか。
0041デフォルトの名無しさん
2010/05/02(日) 18:41:05その矢印が反対のものはADTからinstanceの型への射
ならdataはinstance宣言になるのか?なんかしっくりくるようでこない
0042デフォルトの名無しさん
2010/05/02(日) 23:31:11無い場合がありますよね?
これってputStrLnの引数が文字列リテラルだけの時は要らなくて、文字列++変数
みたいな時には要るということなのでしょうか?
よろしくお願いします。
0043デフォルトの名無しさん
2010/05/02(日) 23:36:33初学者の方ですね。
($)演算子(関数)は、第一引数を第二引数に適用する関数です。
($)がなくても括弧を駆使すれば関数は書けますが、
($)を使うと綺麗に書ける場合が多いのです。
0044デフォルトの名無しさん
2010/05/02(日) 23:45:09ありがとうございます。
"($)演算子"でググればよかったんですね。
f1(f2(f3(arg))) → f1 $ f2 $ f3 $ arg
ttp://blog.livedoor.jp/kikwai/archives/51588251.html
分かりましたー
0045デフォルトの名無しさん
2010/05/02(日) 23:46:36みたいな時には要るということなのでしょうか?
結果としてはそうなのだが、演算子の結合の問題。
0046デフォルトの名無しさん
2010/05/02(日) 23:51:06putStrLn "foo"
の場合、[Char]型の値に、[Char]->IO ()型の関数([Char]を引数に取る関数)が適用されているので型エラーは起きない。
putStrLn "foo" ++ "bar"
の場合、関数適用は演算子の適用よりも優先度が低いので
(putStrLn "foo") ++ "bar"
と解釈されてしまって、まぁ、直感的にもおかしい。正確にいうと、IO ()型の値と"bar"型の値にリスト連結演算子(++)::[a]->[a]->[a]が適用されているので型エラーになる。
この型エラーを回避するためには、
putStrLn ("foo" ++ "bar")
と書いて、"foo"と"bar"に先に(++)を適用するようにすれば良い。
演算子($)は、
f $ x = f x
と定義されている演算子で、他のどの演算子よりも優先度は低いが、関数適用よりは高い優先度を持っている。
だから、
putStrLn $ "foo" ++ "bar"
と書くと、
putStrLn $ ("foo" ++ "bar")
と解釈され($は++より優先度が低いから)
putStrLn ("foo" ++ "bar")
と解釈される($の定義より)。よって、これでも問題は解決される。
この程度だと括弧()を使って優先度を操作するのと$を使うのとで大した違いはないけど、
sortBy f5 (map f4 (groupBy f3 (filter f2 (map f1 list))))
みたいな式を書きたいときとか、括弧()の代わりに$を使うと読みやすくなる。
004746
2010/05/02(日) 23:51:500048デフォルトの名無しさん
2010/05/02(日) 23:58:19いえいえ凄く分かりやすいです。ありがとうございます。
0049デフォルトの名無しさん
2010/05/03(月) 00:08:140050デフォルトの名無しさん
2010/05/03(月) 01:57:07g x y = f1 . f2 . f3 $ x * y
0051デフォルトの名無しさん
2010/05/03(月) 09:43:50>>46
> 演算子($)は、
> f $ x = f x
> と定義されている演算子で、他のどの演算子よりも優先度は低いが、関数適用よりは高い優先度を持っている。
関数適用は何よりも優先順位が高い(最高位)ですよ。
関数適用以上の優先順位のものは Haskell プログラマは定義できないです。
0052デフォルトの名無しさん
2010/05/03(月) 12:47:45否。遅延評価(左最外簡約)なhakellは関数適用が最後。
4 * (3 + 2)とかは
=>4 * 3 + 4 * 2
=>12 + 8
=>20
となる。infixで指定する数値は高ければ高いほど後に回される。
f x y = x * y
g y = 2 * y
としてf x $ g yを評価するとき、$が最初に評価されないといけない。
じゃないとエラーになるでしょ?
0053デフォルトの名無しさん
2010/05/03(月) 12:53:110054デフォルトの名無しさん
2010/05/03(月) 13:34:14そっか、>>46 は「先に評価される=優先度が高い」という話をしてたのか。
それを俺の方が結合度の話をしていると勘違いして、
>>51 で間違った指摘をしてしまったのか。
すまんかった、申し訳ない。
ちなみに >>49 も俺、本当に悪い
0055デフォルトの名無しさん
2010/05/03(月) 22:59:42Prelude> :module +Text.Regex.Posix
ってやったんですが、
Could not find module `Text.Regex.Posix':
Use -v to see a list of the files searched for.
と出てモジュールをロードできません。
OSはDebian lennyです(WinXP上のVMPlayer上で動かしています)
これはモジュールがインストールされていないということでしょうか?
対処方法を教えてください。お願いします。
0056デフォルトの名無しさん
2010/05/03(月) 23:16:40とりあえず、モジュールがインストールされているかどうかを調べてみたらどうだ?
0057デフォルトの名無しさん
2010/05/03(月) 23:21:48すいません 本来どこに入ってるんですか?
/usr/lib/ghc-6.8.2 下とか /usr/lib/haskell-utils あたりを今探している
んですが・・・
該当するライブラリは見つけたっぽいんですけど↓
http://hackage.haskell.org/package/regex-posix
どこにインストールすればいいのか分かりません。
0058デフォルトの名無しさん
2010/05/03(月) 23:37:33でインストール済みパッケージの一覧
005955
2010/05/03(月) 23:54:42/usr/lib/ghc-6.8.2/package.conf:
Cabal-1.2.3.0, array-0.1.0.0, base-3.0.1.0, bytestring-0.9.0.1,
containers-0.1.0.1, directory-1.0.0.0, filepath-1.1.0.0,
(ghc-6.8.2), haskell98-1.0.1.0, hpc-0.5.0.0, old-locale-1.0.0.0,
old-time-1.0.0.0, packedstring-0.1.0.0, pretty-1.0.0.0,
process-1.0.0.0, random-1.0.0.0, readline-1.0.1.0, rts-1.0,
template-haskell-2.2.0.0, unix-2.3.0.0
一覧には無いっぽいですね。
0060デフォルトの名無しさん
2010/05/03(月) 23:56:49正規表現ライブラリはいくつもあるので、Hackageで探してインストール。
0061デフォルトの名無しさん
2010/05/03(月) 23:58:22訂正。ライブラリは見つけたようなので、cabalでインストール。cabal-installがインストールされていなければ、まずそれをインストール(ぐぐればダウンロード元が見つかる)。
0062デフォルトの名無しさん
2010/05/04(火) 13:10:02aptとかで探せば出てくるはず
0063デフォルトの名無しさん
2010/05/04(火) 13:28:39ディストロのパッケージだと何故か上手くいかない、
という相性の問題が以前からたびたび出てるよ。
Debian 系の報告が比較的多い感じ。
Cabal 使っておけば安全だし、他の OS でも知識が生きると思う。
0064デフォルトの名無しさん
2010/05/04(火) 13:35:360065デフォルトの名無しさん
2010/05/04(火) 18:07:52バージョンのチェックが怪しいかもしれんね。
Deb系のパッケージシステムのことはよく知らんが、Cabalみたいに上限バージョンのチェックまでしてくれるのだろうか?
それにDebianのレポジトリに入っているパッケージは全体的に古い
006655
2010/05/04(火) 18:47:03timeを入れようとしたら、baseライブラリが古いと言われ、baseを
アップデートしようと調べたらGHC自体をアップしないと無理と
書いてあったので、最新のGHCをソースからインストールしたら、
Text.Regex.Posixも一緒に入り、最初の問題が解決しました。
0067デフォルトの名無しさん
2010/05/04(火) 19:49:24面倒なことにはなってなかったはず
0068デフォルトの名無しさん
2010/05/04(火) 23:51:230069デフォルトの名無しさん
2010/05/05(水) 00:18:06破壊更新・削除はできません。
0070デフォルトの名無しさん
2010/05/05(水) 00:38:55ていうか、Cabalはbuild architectureだから。
パッケージ管理システムではなく、makeの置き換えだと考えるべき。
パッケージ管理はghc-pkgがやっている。
0071デフォルトの名無しさん
2010/05/05(水) 00:40:59プログラミングHaskell (ISBN-10: 4274067815)で良い気がした。
RWHは長いからタイトル通り実用例題集くらいに思って、これと両方持ってると良さそうですな。
0072デフォルトの名無しさん
2010/05/05(水) 03:08:320073デフォルトの名無しさん
2010/05/05(水) 07:38:52ghc-pkg unregisterではだめか?
0074デフォルトの名無しさん
2010/05/05(水) 11:45:39依存性を考慮するのがメンドイ
ライブラリAが、ライブラリBをインストールした時に同時にインストールされたものか、
それともライブラリBをインストールする前からインストールされてたのか、
すぐに忘れる。
あと、ライブラリやドキュメント、実行ファイルを消すのがメンドイ
まぁ、これはインストールされてる場所は決まってるから、作業は簡単なんだが。
0075デフォルトの名無しさん
2010/05/05(水) 13:40:14-----
(略)
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install
-----
なので指示通り "cabal install cabal-install" をした。
しかしこのコマンドはエラーメッセージも表示されず完了したのに、
"cabal info cabal-install" をすると、次のように表示される。
-----
(略)
Latest version available: 0.8.2
Latest version installed: [ Unknown ]
(略)
-----
何故?
[環境]
Windows7
Haskel Platform 2010.1.0.0
0076デフォルトの名無しさん
2010/05/05(水) 14:39:380077デフォルトの名無しさん
2010/05/05(水) 17:59:08cabal-install version 0.8.1
using version 1.8.0.2 of the Cabal library
です。
0078デフォルトの名無しさん
2010/05/05(水) 18:33:390079デフォルトの名無しさん
2010/05/05(水) 19:34:46手動で入れても相変わらず同じ結果だった。
ではビルドされた cabal.exe はどこに行ったのかと思って検索してみたら、
"C:\Users\...\AppData\Roaming\cabal\bin" にあった。
"cabal --global install cabal-install" でインストールしてみたところ、
"C:\Program Files\Haskell\bin" にインストールされた。
以前のバージョンの Haskell Platform についてきた Cabal では、
--global を指定しなくても Program Files の方にインストールされてたんだけど、
仕様が変わったのでしょうか。
それとも、うちだけ?
あと、これでも "cabal info cabal-install" をすると、
相変わらず Latest version installed: [ Unknown ] と表示される。
何が何だか分かんなくなってきた。
もう少し調べても分からなかったら、Haskell Platform を再インストールしてみる。
0080デフォルトの名無しさん
2010/05/05(水) 19:58:54その現象には私も直面した。
globalとuserの両方にcabalがあり、userのほうが新しいcabalのはずなのだが、
参照されているcabalは古いバージョンのようだ。
私はHaskellのライブラリを全部削除してからGHCを再インストールした。
もっとうまい方法はないだろうか。
0081デフォルトの名無しさん
2010/05/06(木) 06:48:090082デフォルトの名無しさん
2010/05/06(木) 12:07:330083デフォルトの名無しさん
2010/05/07(金) 20:58:39他のライブラリは "cabal install" でインストールしたら
ちゃんと "cabal info" に反映されるのに、
cabal-install だけは反映されない。
こういうモンだと思って、もう諦めた。
0084デフォルトの名無しさん
2010/05/07(金) 22:33:07モジュールの依存関係を正しく理解してないことがしばしばある
しかも、出来上がったパッケージが稀に壊れてたりもする
cleanしてからビルドするとちゃんとしたものが出来るけど、それってどうなのよ
0085デフォルトの名無しさん
2010/05/07(金) 23:28:400086デフォルトの名無しさん
2010/05/08(土) 01:41:52パッケージごとに管理しているせいではないか。
このパッケージごとの名前空間分離は、ファイル名ベースの管理と違って、
重複を避けやすい反面失敗しやすい、許容範囲の狭い方法だろう。
実験的なソフトウェアが多いHaskellにおいては、予想外の動作をするよりは
動作しないほうが安全であり、Cabalは望ましい設計だということができるだろう。
一方で、Haskellをプロダクションに使うには、ビルドを確実に処理するための
特別なサポートが必要だろう。
0087デフォルトの名無しさん
2010/05/08(土) 11:48:44ttp://openpdf.com/ebook/replicate-haskell-pdf.html
0088デフォルトの名無しさん
2010/05/09(日) 00:02:15型Bと型Cを、型Aへ変換する関数を持つクラスのインスタンスにするしかないでしょうか。
0089デフォルトの名無しさん
2010/05/09(日) 00:35:53モジュールを分けて修飾インポート。
しかしそもそも同じ名前にすべき理由は何?
0090デフォルトの名無しさん
2010/05/09(日) 00:37:11let a = B.toA b
a' = C.toA c
0091デフォルトの名無しさん
2010/05/09(日) 18:06:43True
> or []
False
GHCでこんな結果がでるんですが、これは意図してこのように定義されて
いるのでしょうか? どっちも False か、どっちもエラーかの方が妥当な
気がするのです。
0092デフォルトの名無しさん
2010/05/09(日) 18:26:48and (x:xs) = x && and xs
or (x:xs) = x || or xs
その2つとこれ見て実際に手を動かしてみたら分かると思うな。
0093デフォルトの名無しさん
2010/05/09(日) 19:53:22http://feather.perl6.nl/~audreyt/osdc/haskell.xul
を読もうとしていますが唯一、Firefox/Linuxでのみ読めました。
他のブラウザは、拡張子がわからない(IE、Chrome)とか、
ソースがそのまま表示されるとか(Firefox/Win)です。
Linuxで読めればいいかというと、レイアウトが乱れて読めない場所があったりします。
どうしたらいいでしょうか?
009493
2010/05/09(日) 20:12:20> ソースがそのまま表示されるとか(Firefox/Win)です。
Mac (Safari, Firefox)でも似たようなものです。
0095デフォルトの名無しさん
2010/05/09(日) 21:28:24ありがとうございます。
いや、今のところ特にそれで困っているという状況ではないです。
単に C/C++ などのようなオーバーロードはできるかなと思っただけです。
0096デフォルトの名無しさん
2010/05/09(日) 22:49:26プログラミングHaskel 6章の課題をやっていて、and'という名前で、
まさにそのように定義しました。でも、この定義は and' [] の場合
を決めていませんし、実際にやってみたら、エラーになりました。
ライブラリ関数 and もそうなんだろうと思って試してみたら、>>91
の結果が返ってきました。
それで質問をさせてもらったのでした。
0097デフォルトの名無しさん
2010/05/09(日) 23:23:27GHC ライブラリ リファレンスの Prelude.and 関数や or 関数の説明からは、
次のように定義されているっぽいと推測できる。
and 関数は有限リスト、無限リストを問わず、
どこかにひとつでも False があると分かれば False を返す。
それ以外は True を返す(が、そのためには有限リストで無ければならない)。
or 関数は有限リスト、無限リストを問わず、
どこかにひとつでも True があると分かれば True を返す。
それ以外は False を返す(が、そのためには有限リストで無ければならない)。
なので、and [] は「それ以外」の条件に当てはまり True となる。
or [] も「それ以外」の条件に当てはまり False となる。
0098デフォルトの名無しさん
2010/05/09(日) 23:34:52さすがにhaskellではhead [] /= []かつtail [] /= []だけど
0099デフォルトの名無しさん
2010/05/09(日) 23:45:530!(0の階乗)を 1と定義するのと同じ.
010091
2010/05/09(日) 23:57:03いただいた回答を参考に、もうちょっと考えてみたいと思います。
回答してくださったみなさんありがとうございます!
0101デフォルトの名無しさん
2010/05/10(月) 16:38:55■ このスレッドは過去ログ倉庫に格納されています