[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 11:45 / Filesize : 259 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

関数型プログラミング言語Haskell Part3



1 名前:デフォルトの名無しさん [04/02/10 22:16]
Haskellの公式HP
www.haskell.org/
日本語サイト
www.sampou.org/cgi-bin/haskell.cgi
www.teu.ac.jp/kougi/koshida/Prog6/index.html

過去ログ、関連スレは>>2-5

321 名前:デフォルトの名無しさん mailto:sage [04/10/27 19:35:19]
これは関数定義の順番の問題。
Haskellでは、先に書かれたものから順にパターンマッチが行われるため、
c x t n = ...はnに対する条件がないため、
nが-1のときもこっちが適用されてしまい、無限ループにおちいる。
c x t (-1) = 0
c x t n = ...
の順に並べれば問題は解決する。

322 名前:デフォルトの名無しさん mailto:sage [04/10/27 22:11:34]
www.teu.ac.jp/kougi/koshida/Prog6/text02.html
ここで使っている、
文字→コード ord :: Char -> Int
コード→文字 chr :: Int -> Char
という関数が定義されていないようです。
環境はwindows 2000 でhugsを使っています。
:versionと入力すると、以下のように出ます。
-- Hugs Version Nov 2003
:browse Preludeとしてみてもordという関数はないので
バージョンUPして使えなくなったということでしょうか?


323 名前:デフォルトの名無しさん mailto:sage [04/10/27 22:38:22]
Prelude> :l Char
Char> :t ord
ord :: Char -> Int

324 名前:デフォルトの名無しさん [04/10/27 23:04:58]
>>319
わざわざ Float->Int->FloatにしようとするからfromIntegralが
必要になる。

f x n = sin ( pi * x * (2 * n + 1))

だけで明示的に型を指定するのやめれば

*Main> :t f
forall a. (Floating a) => a -> a -> a

という型になるがあとは勝手にやってくれるよ。


325 名前:デフォルトの名無しさん mailto:sage [04/10/27 23:10:08]
あーでもそれじゃnに整数以外の数つっこめちゃうのでだめか。



326 名前:320 [04/10/28 22:17:40]
>>321
ありがとうございます。gnuplotでグラフを書かせるためのファイルを
出力しようと目論んでいるのですが、rubyより知的な気分ですね。

可読性はどうなんでしょう。
多少字面は見づらいけど、数学みたいに書けて
コンピュータ特有のことを考えないで済む分楽かもしれませんね。


327 名前:デフォルトの名無しさん mailto:sage [04/10/29 01:33:14]
>>323
なるほど。:loadしないと使えないのですね。
runhugsやGHCで使う場合というか、ファイルに書いておいて使う場合は、
(なんていったらよいのでしょう?)
import Charすればよいのですね。わかりました。

ありがとうございます。


328 名前:デフォルトの名無しさん mailto:sage [04/11/03 13:44:05]
みんなこの言語使って何やってるの?

329 名前:デフォルトの名無しさん mailto:sage [04/11/03 15:47:57]
「最近Haskellっていう言語勉強しててね。 いやーCとは全然違うすごい言語だよ。
関数型って言うんだけどね。」
「すごーいよく分からないけどかっこいいー」



330 名前:デフォルトの名無しさん mailto:sage [04/11/03 16:40:43]
「最近Haskellっていう言語勉強しててね。 いやーCとは全然違うすごい言語だよ。
関数型って言うんだけどね。」
「すごーいよく分からないけどかっこいいー。じゃあ、今晩はカレーにしようか?」

331 名前:デフォルトの名無しさん mailto:sage [04/11/03 17:16:56]
今晩はカリーか。

332 名前:デフォルトの名無しさん mailto:sage [04/11/03 17:18:14]
今晩はカリだ。

333 名前:デフォルトの名無しさん mailto:sage [04/11/03 20:22:31]
アライグマ Haskell

334 名前:デフォルトの名無しさん mailto:sage [04/11/05 01:38:12]
>>328
言語習いたてのワクワクをモ一度味わいたくて。
とりあえずKISSローダ作るのが目標です。

335 名前:デフォルトの名無しさん mailto:sage [04/11/05 08:51:13]
KISSローダってなんですか

336 名前:デフォルトの名無しさん [04/11/21 20:03:44]
CommonLisp/Scheme と Haskel と ML の中で一番実用に近いのは何?
私は CommonLisp だと思うんだけど。

337 名前:デフォルトの名無しさん mailto:sage [04/11/21 20:09:03]
>>336
比較対象が微妙に違っているわけだが。

338 名前:デフォルトの名無しさん [04/11/22 09:26:06]


339 名前:デフォルトの名無しさん mailto:sage [04/11/22 11:49:50]
すみません。最近勉強を始めた者ですが、頭が悪いものでどうにもわからず
困っています。よろしければご教授願えませんでしょうか。
3つをまとめる関数 zip3 を zip を用いて定義せよ、という問題で
zip3 :: [a] -> [b] -> [c] -> [(a,b,c)]
zip3 (x:xs) (y:ys) (z:zs) = change (zip (zip x y) z) : zip3 xs ys zs
where
change :: [((a,b),c)] -> [(a,b,c)]
change [((x,y),z)] = [(x,y,z)]
zip3 _ _ _ = []
というものを考えたものの、どこがどう悪いのか自分ではわかりません。
1週間悩んで進展なしで独力では無理なようなので、どなたかお教えいただけませんでしょうか?




340 名前:デフォルトの名無しさん mailto:sage [04/11/22 12:36:43]
zip3 :: [a] -> [b] -> [c] -> [(a,b,c)]
zip3 xs ys zs = map change $ zip xs (zip ys zs)
where
change (x,(y,z)) = (x,y,z)

341 名前:デフォルトの名無しさん mailto:sage [04/11/22 15:58:39]
>>339
型があってない。っていうかzip使ってない。

> zip3 (x:xs) (y:ys) (z:zs) = change (zip (zip x y) z) : zip3 xs ys zs
x , y, z :: aだから zip x y とはできない。(もともとa = [b]でないかぎり)
zip3 (x:xs) (y:ys) (z:zs) = (x, y, z) : zip3 xs ys zs
と書こうとしてるわけだからこれではzipの使いようがない。

参考>>184の上半分
zip3 x y z = (,,) <$> x <-> y <-> z

342 名前:デフォルトの名無しさん [04/11/23 10:14:37]
{-
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
zipWith f (x:xs) (y:ys) = (f x y) : (zipWith f xs ys)
zipWith f [] _ = []
zipWith f _ [] = []

zip :: [a] -> [b] -> [(a,b)]
zip xs ys = zipWith mkpair xs ys
  where
    mkpair x y = (x, y)
-}
zip3 :: [a] -> [b] -> [c] -> [(a,b,c)]
zip3 xs ys zs = zipWith mkpair xs (zip ys zs)
  where
    mkpair x (y, z) = (x, y, z)


343 名前:デフォルトの名無しさん mailto:sage [04/11/23 11:56:51]
zip3' = (zipWith (uncurry (,,)) .) . zip

344 名前:デフォルトの名無しさん mailto:sage [04/11/23 17:24:36]
zip3' = const zip3 zip

345 名前:デフォルトの名無しさん mailto:sage [04/11/24 12:28:10]
339です。自室のPCからでははじかれてしまって書き込みができなかったので
遅くなってしまいましたが、ありがとうございます。
たいへん助かりました。
…お礼の言葉が遅くなってしまい、申し訳ありませんでした。m(__)m


346 名前:デフォルトの名無しさん mailto:sage [04/12/08 23:32:07]
-- Haskell Mode

Haskell Haskellモード 関数型言語でーす

Haskellモード Haskellモード Haskellモード Haskellモードでーす
Haskellモード うにゃ〜 うにゃにゃ lazily evalute!

関数 … カリー様 関数 … か・た・す・い・ろん
モナド >>= … わたしのシモベェ〜 モナド >>= …

Haskellモード Haskellモード Haskellモード 98モードでーす
Haskellモード Haskellモード Haskellモード Haskellモードでーす

たらい、回したくなっちゃった…


347 名前:デフォルトの名無しさん mailto:sage [04/12/25 20:17:26]
>>346
大丈夫?

348 名前:デフォルトの名無しさん mailto:sage [04/12/26 01:33:03]
Everyday Haskell
www.sampou.org/cgi-bin/haskell.cgi?Everyday&l=jp
が面白い


349 名前:デフォルトの名無しさん mailto:sage [04/12/26 03:05:21]
fold右派とfold左派にワラタ



350 名前:デフォルトの名無しさん mailto:sage [04/12/27 03:20:36]
The Evolution of a Haskell Programmerでググれ
という話ではなかったようだなスマソ

351 名前:デフォルトの名無しさん mailto:sage [04/12/27 23:20:33]
これ既出?
www.cin.ufpe.br/~haskell/vhs/

352 名前:デフォルトの名無しさん mailto:sage [05/01/05 13:43:39]
>>347
346の文字列を読んで、ラテン系の伴奏が聞こえてくるようだと
かなりダメ。

353 名前:デフォルトの名無しさん mailto:sage [05/01/06 03:09:05]
>>346
禿げワロス
カリー様(・∀・)イイ!!

354 名前:デフォルトの名無しさん mailto:sage [05/01/12 23:45:50]
保全sage

355 名前:デフォルトの名無しさん mailto:sage [05/01/15 03:17:13]
Hatena::Diary 「Haskell」を含む日記
のとある日記を見てちょっとワラた

「むしゃくしゃしてやった.Haskell で書くつもりはなかった.今は反省している.簡潔に書けるが,知らない人には全く読めないだろうし,知っている人はもっとうまく書くかもしれない.」


356 名前:デフォルトの名無しさん mailto:age [05/01/15 03:36:47]
ocaml age

357 名前:Aransk [05/01/18 12:16:33 ]
>>355
ワラた。
++ "しばらくしたら…誰も読めなくなるだろう。"

358 名前:デフォルトの名無しさん mailto:sage [05/01/23 14:46:59 ]
The Implementation of Functional Programming Languages オンライン復刻記念
ttp://research.microsoft.com/Users/simonpj/papers/slpj-book-1987/

って既出?

359 名前:デフォルトの名無しさん mailto:sage [05/01/24 10:44:32 ]
>>358 おおっ! 既出ではないと思う。さんくす。
といいつつ書籍で持ってるのだがw。いい本だよねー。





360 名前:デフォルトの名無しさん mailto:age [05/01/24 10:56:09 ]
OCamlだとMLっぽいから書きやすいんだけど…。

361 名前:デフォルトの名無しさん mailto:sage [05/01/24 18:01:20 ]
>>358
やけにでっかいから何かと思ったら、300もあるページがみんな画像……

362 名前:デフォルトの名無しさん mailto:sage [05/01/25 02:46:41 ]
Revision Control System を、調べてたら、
darcs ( ttp://abridgegame.org/darcs )
というのを、ハケーンしました。
これは、haskell で書かれているので、「haskellってなんや。」と調べる流れでここに来ました。

私が知らないだけ、haskellでかかれたアプリはいっぱいあるのかも知れませんが、
上の方に出てないみたいなので、書いてミマス。

激しくガイシュツでしたらすいません。

363 名前:デフォルトの名無しさん mailto:sage [05/01/25 15:14:39 ]
haskellで書かれたアプリはそんなに珍しくないと思う。
www.haskell.org/practice.html
にいくつか載ってる。

364 名前:デフォルトの名無しさん mailto:age [05/01/25 15:17:08 ]
haskellとOCamlではどちらがメジャーですか?

365 名前:デフォルトの名無しさん mailto:sage [05/01/25 15:25:18 ]
そういうのをドングリの背比べというのではないだろーか。

366 名前:デフォルトの名無しさん [05/01/25 16:01:51 ]
スラド本家?とLtUで取り上げられた<darcs
it.slashdot.org/article.pl?sid=04/11/25/0136249&tid=156&tid=218
lambda-the-ultimate.org/node/view/391

純粋に関数的な「パッチの適用」を,ファイルやディレクトリの読み書きからキレイに分離でき,
また,パターンマッチングと高階関数が,パッチのプリミティブの実装にとてもマッチする,とある.

詳しくはこちら.
osdir.com/Article2571.phtml

367 名前:デフォルトの名無しさん mailto:sage [05/02/06 15:35:00 ]
>>346
超ワロタw

368 名前:デフォルトの名無しさん mailto:sage [05/02/06 19:52:48 ]
>>367
元ネタキボンヌ


369 名前:346 mailto:sage [05/02/06 20:18:15 ]
>>368
that3.2ch.net/test/read.cgi/gline/1104975149/1-9



370 名前:デフォルトの名無しさん mailto:sage [05/02/07 04:10:20 ]
ぬるほど

371 名前:デフォルトの名無しさん mailto:sage [05/02/09 05:46:41 ]
Haskellの初歩を学校でやっているのですが、
宿題が出て難しすぎるので誰か助けて下さい。

372 名前:デフォルトの名無しさん mailto:sage [05/02/09 10:53:26 ]
2つの項を入力されたらmost general unifierを出力する
*(1,y) *(x,+(a,b)) -> {x->1,y->+(a,b)}
のようなプログラムを作れ、という課題が出たのですがサッパリわかりません。
どなたか教えて下さい


373 名前:デフォルトの名無しさん mailto:sage [05/02/09 20:23:43 ]
>>372
もう一年やれば、理解も深まるよ。

374 名前:デフォルトの名無しさん mailto:sage [05/02/09 20:27:03 ]
というか,課題が全然理解できないんだが.

375 名前:デフォルトの名無しさん mailto:sage [05/02/09 20:42:11 ]
あ,分かってしまった.もう一年がんばってね.

376 名前:デフォルトの名無しさん mailto:sage [05/02/09 20:59:08 ]
問題の意味がわからないのならどうしようもないな

377 名前:デフォルトの名無しさん mailto:sage [05/02/09 22:14:31 ]
>>372
これ、数学板のmathematicaスレでも見たぞ
マルチすんな、消えろ

378 名前:デフォルトの名無しさん mailto:sage [05/02/09 23:27:11 ]
もっと低レベルな人にあわせてくれる学校に入りなおしましょう。


379 名前:デフォルトの名無しさん mailto:sage [05/02/09 23:49:57 ]
>>370
カッ



380 名前:デフォルトの名無しさん mailto:sage [05/02/10 01:16:45 ]
[1,5,8,43]などのリストをパラメータとして受け取って
[("1st",43),("2nd",8),("3rd",5),("4th",1)]のように
ランクをつけてランク順に返す関数が欲しいのですが
問題は[5,6,6,22,23,24,24]のような場合に
[("1st",24),("1st",24),("3rd",23),("4th",22),("5th",6),("5th",6),("7th",5)]
のように返さなければいけないことです。どうすればいいかさっぱりです。
誰か教えて下さい。


381 名前:デフォルトの名無しさん mailto:sage [05/02/10 02:07:40 ]
List> group $ reverse $ sort [5, 6, 6, 23, 24, 24]
[[24, 24], [23], [6, 6], [5]]
ここまで来りゃ後はなんとでもなるだろ。

382 名前:デフォルトの名無しさん mailto:sage [05/02/10 02:35:51 ]
>>381
ありがとうございます!!

383 名前:デフォルトの名無しさん mailto:sage [05/02/10 02:43:00 ]
あ、ランクを付ける際にはカウンタみたいなものを用意するんですか?

384 名前:デフォルトの名無しさん mailto:sage [05/02/10 04:08:38 ]
宿題か? 宿題なのか? テメエェェェ

385 名前:デフォルトの名無しさん mailto:sage [05/02/10 07:31:12 ]
>>381
演算子 $ って初めて見ましたが,なかなか便利ですね.
勉強になりました.

386 名前:デフォルトの名無しさん mailto:sage [05/02/10 09:38:36 ]
はい、そーです

387 名前:デフォルトの名無しさん mailto:sage [05/02/10 23:12:49 ]
> ここまで来りゃ後はなんとでもなるだろ。

いろいろ考えたのですがなんともなりません。
むしろここから先が一番大変なのではないかと・・・
まじで教えてくれませんか?

388 名前:デフォルトの名無しさん mailto:sage [05/02/10 23:27:15 ]
ここまで来てなんともならんてのは、けっきょく全然理解してないってことだ
ろ。これくらい自分で考えてみ。でないとただのカンニングだろ。


389 名前:デフォルトの名無しさん mailto:sage [05/02/11 03:20:58 ]
僕にはこれが限界でした。

rank :: [[a]] -> [(Int, a)]
rank x = [(i, n) | (i, a) <- zip [1..] x, n <- a]

確かに理解は非常に足りません。ですが、本を読んでも、
いろいろなほかのテクニックを知ってもループという基本的なことを
するのがこんなに難しい言語は初めてなのです。
なんらかのライブラリを使う必要があるのかもしれないと思って、
Listのところは大体見たんですが結局何も見当たらずもうダメです。
こんな簡単であろう問題に3時間も4時間もかけてる自分がすごい嫌になってきます。




390 名前:デフォルトの名無しさん mailto:sage [05/02/11 04:03:59 ]
ま、気楽にやれや、学生なんだし。

391 名前:デフォルトの名無しさん mailto:sage [05/02/11 04:52:51 ]
そう気楽でもないんすよ。いろいろあって。
ヒントを下さい。お願いします。

392 名前:デフォルトの名無しさん mailto:sage [05/02/11 08:05:13 ]
>>391
[1..]のところを["1st", "2nd", ...]というリストにすれば終わりだろ。
英語のカウントに勝手に直してくれるようなライブラリはないだろうな。

393 名前:デフォルトの名無しさん mailto:sage [05/02/11 09:27:09 ]
>>392
> [1..]のところを["1st", "2nd", ...]というリストにすれば終わりだろ。

そのリストはどこまで続くんですか?

394 名前:デフォルトの名無しさん mailto:sage [05/02/11 09:48:51 ]
いや、それじゃランク順の法則が違うんですよ。それだと
[("1st",24),("1st",24),("2nd",23),("3rd",6),("3rd",6),("4th",5)]
になっちゃうんですよ。

課題は
[("1st",24),("1st",24),("3rd",23),("4th",6),("4th",6),("6th",5)]
にならなきゃいけないので前のリストのカウントを常にしないと次のランクが
分からないわけです。これをどうしたものかと・・・・

>>393
同じ課題で悩んでる人ですか?そのリストは(length x -1)thまで続くんじゃないでしょうか?

与えられた整数に英語のカウントをつける関数はもう作ってあるんですが。

addSuffix :: Int -> String
addSuffix x
| x == 1 = "1st"
| x == 2 = "2nd"
| x == 3 = "3rd"
| otherwise = show x ++ "th"

395 名前:デフォルトの名無しさん mailto:sage [05/02/11 10:08:15 ]
>>394
> にならなきゃいけないので前のリストのカウントを常にしないと次のランクが
> 分からないわけです。これをどうしたものかと・・・・

rankingの関数が、
1)降順ソートずみ整数の(部分)リスト (初期値 全リスト)、
2)これまでに処理した整数の数 (初期値 ゼロ)、
3)直前に処理した整数 (初期値 -1とか、入力リストに絶対あらわれないもの)、
4)直前に処理した整数のランク (初期値 ゼロ)、
のよっつを引数として取ればいいんじゃないの?

> 与えられた整数に英語のカウントをつける関数はもう作ってあるんですが。
> | otherwise = show x ++ "th"
これだと
21番目は "21th"
22番目は "22th"
になっちゃうよ……


396 名前:デフォルトの名無しさん mailto:sage [05/02/11 10:51:06 ]
あ、ほんとだ!ご指摘ありがとうございます。
じゃぁ条件分岐のところ、xの代わりにmod x 10で。

rankingの関数はやはり4つも引数が必要ですか・・・・。
じゃぁそれでちょっと頑張ってみます。

397 名前:デフォルトの名無しさん mailto:sage [05/02/11 11:01:33 ]
ちょっとやり方は違うけど4つの引数使ってやっとできました。
でもなんかぎこちない感じ・・・。これでいいのでしょうか。
もっとスマートなやり方があるような気がしてなりません。

setRank :: [Int] -> [(String, Int)]
setRank [] = []
setRank (x:xs) = ("1st", x):[(addSuffix a, b) | (a, b) <- subSetRank xs x 2 0]

subSetRank :: [Int] -> Int -> Int -> Int -> [(Int, Int)]
subSetRank [] _ _ _ = []
subSetRank (x:xs) preVal position k
| x == preVal = [((position - (k+1)), x)] ++ (subSetRank xs x (position+1) (k+1))
| otherwise = [(position, x)] ++ (subSetRank xs x (position+1) 0)

addSuffix :: Int -> String
addSuffix x
| mod x 10 == 1 = "1st"
| mod x 10 == 2 = "2nd"
| mod x 10 == 3 = "3rd"
| otherwise = show x ++ "th"


398 名前:392 mailto:sage [05/02/11 11:01:34 ]
>>394
失礼。俺なら395よりは、
groupBy (\x y -> snd x == snd y) $ zip [1..] $ reverse $ sort [5, 6, 6, 23, 24, 24
]
から変形するな。

399 名前:どうでしょうか,,, mailto:sage [05/02/11 11:11:26 ]
import List
rank :: Integer -> String
rank x
| x `mod` 10 == 1 = s ++ "st"
| x `mod` 10 == 2 = s ++ "nd"
| x `mod` 10 == 3 = s ++ "rd"
| otherwise = s ++ "th"
where s = show x

ranks :: [String]
ranks = map rank [1..]

sort_group :: Ord a => [a] -> [[a]]
sort_group l = group $ reverse $ sort l

main :: Ord a => [a] -> [(String,[a])]
main lst = zip ranks (sort_group lst)



400 名前:デフォルトの名無しさん mailto:sage [05/02/11 11:14:24 ]
>>399
全然違うじゃないか。
それにmainはIO aの型であるべきもので、使わないほうがいい。

401 名前:デフォルトの名無しさん mailto:sage [05/02/11 11:21:27 ]
誰も書かないから突っ込むけど、
11th,12th,13th

そんな私はsort使うためにimport Listするとhugsにレイアウトが違うと怒られる駄目駄目プログラマ。

402 名前:401 mailto:sage [05/02/11 11:27:11 ]
importがImportになってた スレ違い御免orz

403 名前:デフォルトの名無しさん mailto:sage [05/02/11 11:28:33 ]
どうもありがとうございます。おかげ様で前のよりはマシになったかと思います。

setRankS :: [Int] -> [(String, Int)]
setRankS x = concat [setFirst n | n <- (groupBy (\x y -> snd x == snd y) $ zip [1..] x)]

setFirst :: [(Int, Int)] -> [(String, Int)]
setFirst ((x, y):xs) = [(addSuffix x, b) | (a, b) <- ((x, y):xs)]


404 名前:デフォルトの名無しさん mailto:sage [05/02/11 11:41:07 ]
>>401
またまた貴重なご指摘ありがとうございます。

addSuffix :: Int -> String
addSuffix x
| x == 11 = s ++ "th"
| x == 12 = s ++ "th"
| x == 13 = s ++ "th"
| mod x 10 == 1 = s ++ "st"
| mod x 10 == 2 = s ++ "nd"
| mod x 10 == 3 = s ++ "rd"
| otherwise = s ++ "th"
where s = show x


405 名前:401 mailto:sage [05/02/11 11:52:24 ]
あーごめんなさい。私もまだ間違ってた。
111th,112th,113th,211th....。序数詞は怖い。もうないよね。

406 名前:デフォルトの名無しさん mailto:sage [05/02/11 12:03:11 ]
| mod x 100 == 11 = s ++ "th"
| mod x 100 == 12 = s ++ "th"
| mod x 100 == 13 = s ++ "th"

これ足せばOK?

407 名前:デフォルトの名無しさん mailto:sage [05/02/13 13:11:54 ]
宿題しか話題のない悲しい言語

408 名前:デフォルトの名無しさん mailto:sage [05/02/13 15:11:50 ]
>>407
> 宿題しか話題のない悲しい言語
達見かな。で、どうしてそうなのかという質問がなされ、欠点が羅列され、
いやそんなことはない理論的に美しいという反論が出て、数少ない実用例も示され……

409 名前:デフォルトの名無しさん mailto:sage [05/02/13 16:36:48 ]
関数型言語なんてみんなそうなんじゃない?
Lisp系は処理系が簡単だから使われるけど、それ以外は…




410 名前:デフォルトの名無しさん mailto:sage [05/02/13 17:23:54 ]
初心者を馬鹿にするとき、一番盛り上がります。

411 名前:デフォルトの名無しさん mailto:age [05/02/13 17:32:09 ]
>>409
OCamlをフリーソフト(非オープンソース)を書くのに使っていますが。

412 名前:デフォルトの名無しさん mailto:sage [05/02/13 18:02:27 ]
じゃあ、みんなでHaskellで言語処理系を作ろう。

413 名前:デフォルトの名無しさん mailto:sage [05/02/13 18:21:28 ]
Haskellでテトリスは作れますか?

414 名前:デフォルトの名無しさん mailto:age [05/02/13 18:26:54 ]
>>413
作れます。

415 名前:デフォルトの名無しさん mailto:sage [05/02/13 18:33:34 ]
Haskellのテトリス↓
web.comlab.ox.ac.uk/oucl/work/ian.lynagh/Hetris/
fxp.hp.infoseek.co.jp/haskell/HSDL/

416 名前:デフォルトの名無しさん mailto:sage [05/02/13 18:55:01 ]
ghcってどれくらいきちんとdebugされてるのかなあ。
仕事に使っても大丈夫?

417 名前:デフォルトの名無しさん mailto:sage [05/02/13 22:14:38 ]
>>411
こういうコンテキストで話すなら、商用に使われてナンボだと思うが。
俺自身は宿題用だろうが日曜プログラマーの趣味の道具だろうが構わんけど。


418 名前:デフォルトの名無しさん mailto:sage [05/02/14 15:53:01 ]
>>416
まあオープンソースだから、sourceforge.net/projects/ghc/やメーリングリストを見て
自分で判断してくださいということで。


ver6.4のリリースが延び延びになっているのが気になる。
RCのソースもコンパイルできないし…(@Mac)

419 名前:デフォルトの名無しさん mailto:sage [05/02/14 20:24:12 ]
そうそう。
あくまでも最先端の研究用なので、品質に期待してはいけない。



420 名前:デフォルトの名無しさん mailto:sage [05/02/19 08:34:16 ]
C,C++の代わりとまではいかなくても、
Perlの代わりぐらいにはなりますか?

421 名前:デフォルトの名無しさん mailto:sage [05/02/19 11:17:33 ]
>>420
もう少しHaskellのこと勉強してから出直してきたら

422 名前:デフォルトの名無しさん mailto:sage [05/02/19 12:09:32 ]
>>421
言語の完成度じゃなくてghcの完成度を聞いてるんだけど。

423 名前:デフォルトの名無しさん mailto:sage [05/02/19 13:10:18 ]
エスパー募集中ですか(w

424 名前:デフォルトの名無しさん mailto:sage [05/02/19 23:54:19 ]
ghcってとてもバグが少ないとおもう。
特に、コンパイル結果がおかしいというのは一つも知らない。
言語拡張を使ってコンパイラが落ちるのはあったが、gccだってよく落ちたし。

品質に期待してはいけないってのは、なんか具体的な理由があるの?

425 名前:デフォルトの名無しさん mailto:sage [05/02/22 20:08:41 ]
GHC最強。ノアだけはガチ。

426 名前:デフォルトの名無しさん mailto:sage [05/02/22 22:01:11 ]
ghcは完璧。バグなんて有り得ない。

427 名前:デフォルトの名無しさん mailto:sage [05/02/23 09:12:55 ]
ttp://www.ghc.or.jp/


428 名前:デフォルトの名無しさん mailto:sage [05/02/23 19:20:04 ]
ghcの品質に問題ありとかいってる奴は頭がおかしいな。

429 名前:デフォルトの名無しさん mailto:sage [05/02/23 20:51:01 ]
関数型言語で書かれてないソフトウェアなんて
信頼性低すぎて使ってられないよな。



430 名前:デフォルトの名無しさん mailto:sage [05/02/23 21:14:20 ]
ghcにはバグなんてない。
ghcの信頼性 >>>>>>>>> gccの信頼性

431 名前:デフォルトの名無しさん mailto:sage [05/02/24 11:00:34 ]
     カタカタ
  || ̄ Λ_Λ
  ||_(Д`; ) 「なに?このスレ・・・」
  \⊂´   )
    (  ┳'

432 名前:デフォルトの名無しさん mailto:sage [05/02/26 23:31:32 ]
妙な雰囲気を紛らわす一服の清涼剤sage

ttp://pggirls.asukaze.net/index.php?cmd=read&page=イ霖/Haskell、ソ、

433 名前:デフォルトの名無しさん mailto:sage [05/02/27 03:01:22 ]
ghcにバグがないことは証明済みです。

434 名前:デフォルトの名無しさん mailto:sage [05/03/02 14:39:26 ]
The Monad.Reader
www.haskell.org/hawiki/TheMonadReader


435 名前:デフォルトの名無しさん mailto:sage [05/03/05 17:27:02 ]
証明が間違ってないことも証明済みです

436 名前:デフォルトの名無しさん mailto:sage [05/03/05 21:47:09 ]
よく分からんが、ghcにバグは有り得ないってことか。

437 名前:デフォルトの名無しさん mailto:sage [05/03/06 11:08:10 ]
そゆこと

438 名前:デフォルトの名無しさん mailto:sage [05/03/08 23:33:41 ]
ttp://sourceforge.net/tracker/?group_id=8032&atid=108032


439 名前:デフォルトの名無しさん mailto:sage [05/03/09 00:11:32 ]
ghcってのは宗教か何かですか?



440 名前:デフォルトの名無しさん mailto:sage [05/03/09 00:24:00 ]
真理です

441 名前:デフォルトの名無しさん mailto:sage [05/03/09 20:45:50 ]
我々はこのスレを笑い飛ばしていたものです…。
しかし、その後、、、

442 名前:デフォルトの名無しさん mailto:sage [05/03/10 00:24:38 ]
テレビで観た外国人犯罪者。刑務所で個室をもらい、支給されたパソコン
でお勉強。本国から雑誌や新聞、書籍を送ってもらい、専属の通訳と翻訳家
つきで、食事はその国にあわせたもの。日本人受刑者は狭い部屋ですし詰め。
しばらくして、別のニュースでホームレスが川に落ちたインスタントラーメンを
取ろうとして転落、そのまま凍死してしまったという記事を読んで、せつなくな
ってしまった。
新聞で日本で暮らす脱北者のインタビュー記事。「生活保護の支給額が足りない」
「支援してくれないので日本は冷たい」だと。
別の記事で生活保護を受けられなかった母子がおんぼろアパートで餓死。
この国は本当に狂っている。

443 名前:デフォルトの名無しさん mailto:sage [05/03/10 00:32:05 ]
・・・という内容をghcで矛盾を含まずーディングしはじめる兵(ツワモノ)が現れるのを
目の当たりにすることになったのです。  〜Fin.〜   (2ch.千夜一夜物語)

444 名前:デフォルトの名無しさん [05/03/10 00:58:20 ]
真理です

445 名前:デフォルトの名無しさん mailto:sage [05/03/11 00:20:02 ]
生活苦や迫害から逃れるため北朝鮮を脱出した元在日朝鮮人
大阪府八尾市に支援者が用意した2部屋のアパートで
月約17万円の生活保護と支援者からのカンパで暮らす。

ソウルに住む長男も呼び寄せたいというが、
「いまの生活保護額では厳しい」と悩む日々だ。

www.asahi.com/national/update/0310/OSK200503100048.html

         確定申告済ませたか?

      俺も17万円と2部屋のアパート欲しい。      
   豊な生活送るには、17万円ポッチじゃ、まだタリン。 
     おまえ等の税金もっともっと よ こ せ!

446 名前:デフォルトの名無しさん mailto:sage [05/03/11 00:31:20 ]
ghcならコンパイル可能

447 名前:デフォルトの名無しさん mailto:sage [05/03/11 00:43:13 ]
ghcだからこそコンパイルエラーの結果に終わります。 こんなんに真値判定出されてたまりますか。

448 名前:デフォルトの名無しさん mailto:sage [05/03/12 20:33:41 ]
www.haskell.org/ghc/download_ghc_64.html

449 名前:デフォルトの名無しさん mailto:sage [05/03/12 23:28:12 ]
新たな教典が来ましたね。
もちろんバグはありませんので、安心してご利用ください。



450 名前:デフォルトの名無しさん mailto:sage [05/03/13 02:47:22 ]
>>449 =モズクズ様↓
www.gema3.net/bbs/icon/inore.jpg

451 名前:デフォルトの名無しさん mailto:sage [05/03/14 14:32:35 ]
SOE本とCraft本で、どちらがお勧めですか?

452 名前:デフォルトの名無しさん mailto:sage [05/03/14 16:41:23 ]
>>451
両方

453 名前:デフォルトの名無しさん mailto:sage [05/03/14 23:22:35 ]
今年度は、Hugsの新版出ないの?

454 名前:デフォルトの名無しさん mailto:sage [05/03/15 00:02:58 ]
Mar 2005 releaseがでてるけど

455 名前:デフォルトの名無しさん mailto:sage [05/03/15 08:28:37 ]
あれ、いつの間に。

456 名前:デフォルトの名無しさん mailto:sage [05/03/15 08:32:05 ]
Charが、うにコードに対応したんだ。

457 名前:デフォルトの名無しさん mailto:sage [05/03/20 10:13:33 ]
hugs98-Mar2005-patched.tar.gzキテル━━━━━━(゚∀゚)━━━━━━ !!!!!
updated with urgent bug fixes

458 名前:デフォルトの名無しさん [2005/03/23(水) 00:58:19 ]
同じ関数型言語でもHaskellのほうがSchemeより易しくない?
SMFの解析を書き始めてるけど、コストをあまり考えすぎなくてよい気がするし、
Schemeよりも簡潔に書けるし、実行速度もいくぶん速い。
いまのところ、手続き型の処理を書かなくても
(コストを気にしない限りは)それほど書くのが難しくない。
ただ、効率を気にしだすと書き換えるのは難しいのかな?

459 名前:デフォルトの名無しさん mailto:sage [2005/03/23(水) 07:53:51 ]
素朴な疑問だが、lazyな言語で割り込み処理(シグナル等)はどうやって書くのだろう。
割り込み時の状態はどう定義されるのだろうか。




460 名前:デフォルトの名無しさん [2005/03/28(月) 13:39:35 ]
>>459
もれも良く分からんが、MIT pressから出てるSICPっていう本読んでると
無限ストリームっていうのが出てくるから、それ使うんじゃない?
A Gentle Introduction to Haskellっていう、Haskellの紹介文書
にも無限ストリームを使ったクライアントーサーバー処理の例が出てくるよ。


461 名前:デフォルトの名無しさん mailto:sage [2005/03/28(月) 15:15:52 ]
数学理論に立脚した言語で現実世界を対象としたプログラミングを行うことは間違いだ

462 名前:デフォルトの名無しさん [2005/03/28(月) 15:16:30 ]
>>461
はい?もう一度言ってもらえますか?よく見えなかったので。

463 名前:デフォルトの名無しさん mailto:sage [2005/03/28(月) 18:39:05 ]
>>459
たぶんlazyな言語に対して割り込みのformal semanticsを与えた人はいないと思う。
もの凄く難しい。

>>460
それは単なる入出力ではなかろうか。

464 名前:デフォルトの名無しさん mailto:sage [2005/03/28(月) 20:05:44 ]
イベントや割り込みであろうが入出力には違いないだろ
辻褄が合ってればいい

465 名前:デフォルトの名無しさん mailto:sage [2005/03/28(月) 20:08:30 ]
割込みは「単なる」入出力とは違うってことだろ

466 名前:デフォルトの名無しさん [2005/03/28(月) 23:35:57 ]
ghcでバイナリデータをバイト単位で扱うときって、Word8を使えばいいの?

Charだと数値との比較ができなくて不便。

467 名前:デフォルトの名無しさん [2005/03/29(火) 01:36:32 ]
MacOS X 10.3 で Haskell を使うのにお勧めの方法は何でしょうか?
Hugs98 か ghc になると思うのですが。 fink には入っているのは
どちらも Hugs98 2001-Feb と ghc 6.2 で少々古かったです。

468 名前:デフォルトの名無しさん mailto:sage [2005/03/29(火) 02:58:49 ]
Mac使うのを止めるのがオススメ!

469 名前:デフォルトの名無しさん mailto:sage [2005/03/29(火) 04:16:23 ]
そうだね。
爪弾きにされ、余計な苦労ばかり増えて良いところなんて一つもないし。




470 名前:デフォルトの名無しさん mailto:sage [2005/03/29(火) 08:45:40 ]
finkに頼らんでもHugsなら自分でmakeすればOKだし
GHCは本家にバイナリが用意してある

471 名前:デフォルトの名無しさん mailto:sage [2005/03/30(水) 02:58:36 ]
マイナー言語やる上で Mac は悪くないプラットフォームなんだけどね。
ML も主要なのは殆ど対応しているし。

472 名前:デフォルトの名無しさん mailto:sage [2005/03/30(水) 03:06:14 ]
haskellよりもMLの方が文法綺麗じゃないですか??そんなことないかな…

473 名前:デフォルトの名無しさん mailto:sage [2005/03/30(水) 03:15:35 ]
ML、特にSMLはDefinitionが出て以来そのままだからなあ(97年に改訂されたけど)。
Haskellの方も一応98はあるけど、そうじゃない部分は随時面白い話があるたびに
手を入れてきた感じなのは否めないのかも。


474 名前:デフォルトの名無しさん [2005/03/31(木) 19:07:35 ]
www.amazon.co.jp/exec/obidos/ASIN/0201342758/
www.amazon.co.jp/exec/obidos/ASIN/0521644089/

この 2 冊が欲しいのですが、中を確かめてから欲しいので
都内で在庫がある店知りませんか?
東京駅〜秋葉原〜神保町あたりだと助かります。


475 名前:デフォルトの名無しさん mailto:sage [2005/03/31(木) 22:26:11 ]
グランデに電話してみれば?


476 名前:デフォルトの名無しさん [2005/03/31(木) 22:33:33 ]
> 474
Haskell: The Craft of Functional Programmingはかなりおすすめです。
買って損はないと思います。

477 名前:474 mailto:sage [皇紀2665/04/01(金) 10:58:40 ]
結局 Amazon で注文しました。

www.hatena.ne.jp/1087912125
ここに載っててありそうなところには電話かけましたが
店頭に在庫はないみたいでした。Amazon がない時代は
みんなどうしていたんだろう…。大学生協で取り寄せかな。

478 名前:デフォルトの名無しさん mailto:sage [皇紀2665/04/01(金) 18:28:57 ]
>>474
神田行けばいくらでもあるだろ。
デカイ本屋で在庫あるか訊いてみろ。

479 名前:474 mailto:sage [皇紀2665/04/01(金) 19:57:19 ]
>>478
私には >>477 以外に出てくる本屋以外にデカイ本屋は知りません。
おすすめのコンピュータの洋書をあつかっている店の名前が分かる
なら教えてください。



480 名前:デフォルトの名無しさん mailto:sage [int 2ch =05/04/01(金) 20:48:22 ]
>>479
www.book-kanda.or.jp/town/map/map.htm
www.book-kanda.or.jp/town/newbook/index.htm


481 名前:474 mailto:sage [int 2ch =05/04/01(金) 21:56:48 ]
明日、神田を周ってこようと思います。
ありがとうございました。


482 名前:デフォルトの名無しさん mailto:sage [int 2ch =05/04/02(土) 12:12:07 ]
>>474
君見て自分も思い出したように買ったよ
まあ回っても見つからないと思うよ

483 名前:474 mailto:sage [2005/04/03(日) 11:46:47 ]
昨日行ってきました。
水道橋駅を降りて、神保町駅まで歩きその周辺の本屋を巡りました。
コンピュータの洋書を扱っているのが、三省堂の本店しか見つける
ことができませんでした。在庫はあらず。

いくらでもあるとのことなのですが、探しかたが悪いのか、
>>482 さんの言う通りなのか不明です。

Amazon から Haskell: The Craft of Functional Programming
は届いたので読みすすめてます。結構面白いです。

484 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 04:15:17 ]
>>483
> コンピュータの洋書を扱っているのが、三省堂の本店しか見つける
> ことができませんでした。

え、マジ? それは探し方が悪いのでは。


485 名前:474 mailto:sage [2005/04/06(水) 17:39:21 ]
そうですよね。もっと探検してみます。

486 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 12:56:04 ]
オレも他にはゆうりんどう(字わからん)くらいしか思いつかない。いいとこあるなら教えてcray。

487 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 14:51:05 ]
洋書なんて読むなよこの非国民が

488 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 15:41:08 ]
英語も読めないの?国辱。

489 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 20:21:03 ]
洋書 = 英語書かよ、この拝米主義者め



490 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 20:31:05 ]
英語=拝米の方がよっぽど(ry

491 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 20:48:29 ]
Haskell: The Craft of Functional Programming は英語だろ?
国辱どもが。

492 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 20:57:10 ]
当たり前のことを言うな一知半解野郎

493 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 21:30:11 ]
これがゆとり教育の弊害か。確かに国辱。

494 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 22:14:10 ]
>>487-493
レベルの低い話は止めろ

495 名前:デフォルトの名無しさん mailto:sage [2005/04/08(金) 22:34:40 ]
科学とかに関しては日本なんてどうでもいい罠。


496 名前:デフォルトの名無しさん mailto:sage [2005/04/09(土) 09:19:13 ]
Haskellの勉強してると類(kind)という言葉が出てくる。
手持ちの関数型言語の参考書では見かけないので、類を扱うのは比較的
珍しいことなのかと思うのだけれど、どう?
なんでHaskellには類が必要なの?

497 名前:デフォルトの名無しさん mailto:sage [2005/04/09(土) 13:07:49 ]
Haskellだと、普通の多相型([]とかMaybeとか)に加えて
「型構築子から型構築子への写像」(StateTとか)のようなものを定義できるから、
単に「無引数の型構築子」だとか「1引数の型構築子」とかいうだけじゃ不十分だからだと思う。

まあ、似たような機能のあるC++では「類」なんて聞いたこともないんだけど。
関数型言語についてはよく知らんので誰かフォローよろしく。

498 名前:デフォルトの名無しさん [2005/04/09(土) 13:52:32 ]
WinXPで動くHaskellのコンパイラってある?

499 名前:デフォルトの名無しさん mailto:sage [2005/04/09(土) 13:59:36 ]
>>498
え?GHCがwindowsで動くでしょ???



500 名前:デフォルトの名無しさん mailto:sage [2005/04/09(土) 14:23:03 ]
           ∩ノ
          / つ
         / /  / ̄ ̄ ̄ ̄
      ∧ ∧/   < 500ゲットぉぉぉぉ!
     ⊂(゚Д゚ ) 彡   \
        ⊂彡       ̄ ̄ ̄ ̄
   ____●●●___ バイーン
 / 〇 〇 \|/  /|
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄|

501 名前:デフォルトの名無しさん [2005/04/09(土) 17:40:30 ]
498ではないが、
WINXP sp2 で GHC のインストーラはエラーで落ちました。
hugs98 は簡単にインストールできました。

502 名前:デフォルトの名無しさん [2005/04/10(日) 11:03:22 ]
言語仕様を見るとHaskellの方がはるかに機能的に見えるのだけど、実用面を見るとHaskellはボロボロ。
結局、開発するならOCamlに軍配があがるんだよね。

503 名前:デフォルトの名無しさん mailto:sage [2005/04/10(日) 11:31:38 ]
だから品質には期待するなとあれほど(ry

504 名前:デフォルトの名無しさん mailto:sage [2005/04/10(日) 13:23:42 ]
だからghcにバグはないとあれほど(ry

505 名前:デフォルトの名無しさん mailto:sage [2005/04/11(月) 11:57:34 ]
>>497
Haskellよく知らんけど、合ってるんじゃん?
C++のテンプレートは展開してからチェックするので、いらないんでしょ。たぶん。

506 名前:デフォルトの名無しさん mailto:sage [2005/04/11(月) 12:08:44 ]
>>463
>たぶんlazyな言語に対して割り込みのformal semanticsを与えた人はいないと思う。
>もの凄く難しい

Haskellよく知らんので何か勘違いしてるかもしれんが、

research.microsoft.com/Users/simonpj/Papers/papers.html

のA semantics for imprecise exceptionsの5.1節とか
Imprecise Exceptions, Co-Inductivelyは違うの?


507 名前:デフォルトの名無しさん mailto:sage [2005/04/11(月) 20:32:57 ]
Haskellで正規表現は標準でサポートされているのですか?

508 名前:デフォルトの名無しさん mailto:sage [2005/04/11(月) 20:44:09 ]
>>507
www.google.co.jp/search?hl=ja&q=Haskell+regex&lr=

509 名前:デフォルトの名無しさん mailto:sage [2005/04/15(金) 17:30:13 ]
>>501
3月21日位にインストーラーが変わっている様なのですが、それでインストールしても
駄目ですか?
当方はXP SP2でインストールできています。




510 名前:デフォルトの名無しさん [2005/04/15(金) 19:37:33 ]
つーかインストーラーぐらいちゃんと作れませんか?

511 名前:501 mailto:sage [2005/04/16(土) 12:07:17 ]
>>509
最新版でインストールもできましたし、ちゃんと動きました。
ありがとうございます。


512 名前:デフォルトの名無しさん mailto:sage [2005/04/17(日) 22:00:14 ]
imprecise exception 云々よりどっちかというと Asynchronous exceptions in Haskell の方が該当する希ガス。

513 名前:デフォルトの名無しさん mailto:sage [2005/04/17(日) 22:05:22 ]
この言語扱うのに数学の知識必須みたいだな。初めて使ったが…

514 名前:デフォルトの名無しさん mailto:sage [2005/04/17(日) 22:19:40 ]
そうなの?どの辺でそう感じた?

515 名前:デフォルトの名無しさん mailto:sage [2005/04/17(日) 22:33:46 ]
>>514
いや、大したことじゃないんだけど、集合論とか。

516 名前:デフォルトの名無しさん [2005/04/18(月) 01:09:42 ]
文系お断り言語

517 名前:デフォルトの名無しさん mailto:sage [2005/04/18(月) 11:59:50 ]
Text.Regex は入力を不必要に最後まで読んでくれたりして微妙に嬉しくないんだよなあ。

518 名前:デフォルトの名無しさん [2005/04/18(月) 23:56:27 ]
で、この言語なんて読むんだ?
はすくぇる?

519 名前:デフォルトの名無しさん mailto:sage [2005/04/18(月) 23:57:21 ]
ハスケルカリー



520 名前:デフォルトの名無しさん mailto:sageチラシの裏にでも書いています [2005/04/20(水) 23:24:41 ]
GHCのコンパイルがなかなか終わらない。

ひょっとして、マシンパワーがかなり必要なの?
普段使っているのはおんぼろラップトップなんだよね。

521 名前:デフォルトの名無しさん mailto:sage [2005/04/20(水) 23:45:27 ]
>>520
こちとら、PowerBookG4(867MHz,RAM640MB)で
2ステージ+testsuite が6〜8時間。

522 名前:520 mailto:sage [2005/04/21(木) 08:32:54 ]
朝起きたら無事終わってた
GHCは普通のコンパイラとは内部構造がかなり違うようですな。

523 名前:デフォルトの名無しさん [2005/04/22(金) 20:52:35 ]
某スレでハスケルでGUIは辛いと言われてしまいました。
誰か反論の文句をおねがいします。

524 名前:デフォルトの名無しさん mailto:sage [2005/04/22(金) 20:54:26 ]
だからあれほどHaskellは実用アプリケーション作成向きでは無いと(小一時間

525 名前:デフォルトの名無しさん mailto:sage [2005/04/22(金) 21:08:24 ]
だからあれほどghcは完璧だと(ry

526 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 05:07:16 ]
情処の記事を読んで触ってみた。


527 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 13:52:46 ]
今月からFPの連載だね。

528 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 23:02:55 ]
FP ってなんですか?

529 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 00:06:54 ]
一時期流行った自分視点のゲームだろ



530 名前:デフォルトの名無しさん mailto:sageネタをネタと(ry [2005/04/24(日) 13:13:48 ]
そりゃFPSだ。

動的計画法のことだろ?

531 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 18:54:43 ]
Functional Programmingのことかと思った。

532 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 21:37:20 ]
> 動的計画法のことだろ?
それはDP(dynamic programming)

533 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 23:26:26 ]
わかりにくいネタでごめん

534 名前:デフォルトの名無しさん mailto:sage [2005/04/25(月) 20:31:20 ]
まじでどこで連載してるのか教えてくれ

535 名前:デフォルトの名無しさん mailto:sage [2005/04/25(月) 20:56:53 ]
情報処理学会誌ですね。
久しぶりにビニールを開けてみました。
相変わらず読むところが少ない…。

536 名前:デフォルトの名無しさん mailto:sage [2005/04/27(水) 11:28:18 ]
辛ければヨーグルトを使う

537 名前:デフォルトの名無しさん [2005/04/29(金) 15:38:56 ]
GHCがpanicっていってコンパイル止まったよ。
間違ったソースの中には対応しきれないものがあるようだ。

538 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 16:42:43 ]
>>537
嘘はいけない。ghcにバグはない。

539 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 16:49:25 ]
ghc のバグじゃなくてコンパイルするソース側の



540 名前:デフォルトの名無しさん [2005/04/29(金) 16:57:37 ]
>嘘はいけない。ghcにバグはない。

なんか凄い事聞いた気がする。
ほんと?

541 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 18:00:14 ]
ほんとにそうならghcのwebにバグレポートのリンクがあったりしないべ。


542 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 18:49:30 ]
Financial Planner

543 名前:537 [2005/04/29(金) 21:25:14 ]
ほんとだよ。GHC cannot process input file. please report this to us とか出たもの。
もちろんソースは正しくないやつなんだが、それでもコンパイラが適切なエラーメッセージを
出せずに止まったことは事実。

544 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 22:13:13 ]
ああ、拡張機能や新機能を使うと稀に起こるよ、panic。
ちゃんと報告してあげて下さい。

545 名前:デフォルトの名無しさん mailto:sage [2005/04/30(土) 18:45:06 ]
例のHaskell連載って公開してるんだね
www.ipsj.or.jp/07editj/promenade/

546 名前:デフォルトの名無しさん [2005/04/30(土) 19:44:34 ]
ハスケル!ハスケル!

547 名前:デフォルトの名無しさん mailto:sage [2005/04/30(土) 21:27:04 ]
    _  ∩
  ( ゚∀゚)彡
  (  ⊂彡
   |   | 
   し ⌒J

548 名前:デフォルトの名無しさん [2005/05/01(日) 20:14:08 ]
LISP Macro みたいなことできますか?
-- dotimes :: n -> (n -> IO()) -> IO()
dotimes n f = __dotimes 0
where __dotimes i | i >= n = return ()
| otherwise = do (f i)
__dotimes (i + 1)
-- dotimes 10 ( \x -> putStr (show x))
こんなもの?

549 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:02:28 ]
遅延評価だし、アクションが第一級の対象だから、
全ての関数がマクロであるようなものじゃないか?



550 名前:549 mailto:sage [2005/05/01(日) 23:05:09 ]
なんかピントの外れたことを言ったな。
誰かフォローよろしく。

551 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:19:07 ]
dotimes' n f = sequence_ [ f n' | n' <- [0..n-1] ]
main = dotimes' 10 (putStr.show)


552 名前:無理です。 mailto:sage [2005/05/01(日) 23:20:58 ]
例えばhaskellのif

if p then c else a
は、

case p of
 True -> c
 False -> a

の構文糖衣とみなせる。逆でもよい。
マクロの代わりになるかどうかは、自分のifをcaseで定義できるかどうかを
考えてみればわかる。

myif

mycase

さあどうぞ。


553 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:29:12 ]
myif :: Bool -> a -> a -> a
myif p c a = case p of True -> c; False -> a

でいいんじゃないのか?

554 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:37:45 ]
>>553
thenとかelseはどこいった?

555 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:43:22 ]
シンタックスを定義できなてもマクロと言えると思うが。

556 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:49:16 ]
↑それで消費者が納得すると思ってんのか?

557 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:52:37 ]
>>555
関数マクロと言うべきか。


>>548の回答としては、

Q.LISP Macro みたいなことできますか?
A.できません。


558 名前:デフォルトの名無しさん mailto:sage [2005/05/02(月) 00:05:54 ]
haskellでは
a `lambda` (a + 1)
の様な表現ができないのが本質的っぽいね。

559 名前:デフォルトの名無しさん mailto:sage [2005/05/02(月) 00:11:04 ]
つまり、遅延であろうがなかろうが、LISPのようなマクロを書けるかどうかは
引数評価を自分でコントロールできるかどうかにある。
少なくともLISPのマクロ内に出てくるシンボルみたく、引数の一部を
評価せずにキーワードそのものとして扱うみたいな仕組みがないと。



560 名前:デフォルトの名無しさん mailto:sage [2005/05/02(月) 00:25:50 ]
「遅延評価」の意味で「評価」と言うと意味が違うと思う。
引数の評価をコントロールするだけならhaskellでもできる。
「解釈」と言えばいいのかな?

561 名前:デフォルトの名無しさん mailto:sage [2005/05/02(月) 00:39:06 ]
LISPのマクロはdefineを含むコードを生成できるけど、Haskellではそのような真似はできないはず。


562 名前:デフォルトの名無しさん mailto:sage [2005/05/02(月) 13:13:17 ]
HaXmlで下のinputからoutputのような出力を得たいんですがどのようにすれば
良いでしょうか?

---input---
<function name='deleteBy' type='(a -> a -> Bool) -> a -> [a] -> [a]'>
<description>
similar to <f>delete</f>, but it allows the programmers to supply
their own equality test
</description>

---output---
["deleteBy", "similar to delete, but it allows the programmers to supply
their own equality test"]


<description>の中の<f>の処理がうまく行かず下のような結果になってしまい
ます。<description>の中のテキスト部分だけを抜き出したいです。別リスト
にしないで1つの文字列として。

["deleteBy", "similar to ", "delete", ", but it allows the programmers to supply
their own equality test"]


563 名前:562 mailto:sage [2005/05/02(月) 13:22:01 ]
コードとサンプルデータを載せます。

import System.IO
import System.Environment
import Text.XML.HaXml
import Text.XML.HaXml.Pretty (content)

main :: IO ()
main =
do ~[arg] <- getArgs
h <- openFile arg ReadMode
str <- hGetContents h
case xmlParse "list.xml" str of
(Document _ _ (Elem _ _ contents))
-> mapM_ print $ map getCont contents

getCont = map content . contFilter

contFilter :: CFilter
contFilter = f `o` (tag "function")

f = cat [ ("name"?) , multi txt `o` (keep /> tag "description") ]


564 名前:562 mailto:sage [2005/05/02(月) 13:22:59 ]
<module name="List">

<function name='deleteBy' type='(a -> a -> Bool) -> a -> [a] -> [a]'>
<description>
similar to <f>delete</f>, but it allows the programmers to supply their own equality test
</description>
<example>
<in>deleteBy (\x y -> y `mod` x == 0) 4 [6,8,10,12]</in>
<out>[6,10,12]</out>
</example>
</function>

</module>


565 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 14:30:17 ]
今月の文章は先月の和田先生のよりわかりにくいなあ。
例題をどう解くかの説明が全くなくて、説明もHaskellの説明にはなってるけど
例題のプログラムの説明としてはかなり端折られてるのが原因かな。




566 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 22:34:11 ]
バイナリファイルを弄りたいんですけど
Haskellでビット演算の関数とか演算子とか
あれば教えてください。

567 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:38:07 ]
:browse Bits

568 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 22:14:20 ]
>>567
ありがとうっす

569 名前:デフォルトの名無しさん [2005/05/20(金) 23:02:42 ]
モナドって全然わかない



570 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 23:16:00 ]
↑日本語もわかない人

571 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:33:08 ]
最近自分は悟った。

モノイドとか圏論とかの背景思想を無視して
使う立場だけからいうと
モナドは数珠繋ぎ強制ギプスみたいなものだと。

(IO Char)とか(IO Int)とかの型は
CharやIntの値がくるまれたカプセルみたいなもんだ。
ちなみにIO ()の()はCでいうvoid型
return xx とやると普通の値もIOモナドで包むことができる。

572 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:33:49 ]
ただしIOモナドは一度くるんだら中身を取り出す方法がない。
IO型の関数を普通の関数と組み合わせても型違いで
コンパイルエラーになる。
(IO ()ももちろん型違いでエラー)

そこでモナドの中身の値を
橋渡しするアダプタ(>>=)を使う。

結局>>=や>>で(IO xxx)型の関数同士やreturn xxで
数珠繋ぎにするしかないように強制される。

573 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:42:17 ]
そいつは面倒だあ

574 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:43:08 ]
IOモナドってGPLみたいだなとか思った。

575 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:48:49 ]
数珠つなぎのしくみや値を包みこむ性質を利用して
他にもいろいろなモナドがあるし自分でも作れる(かもしれない)

Stateモナドは数珠繋ぎを利用して
IOモナドみたいな状態遷移を自分で作れる。

Maybeモナドは値を包むほうが主眼のモナド
実際の値の代わりにNothingというダミーを
突っ込んでおくことができる。
データベースのNULL値みたいに使える。

576 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:57:53 ]
モナドと聞くと王監督の顔が思い浮かぶのは何故?

577 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:24:06 ]
>>571
>CharやIntの値がくるまれたカプセルみたいなもんだ。
俺にはこの表現がなじまない。
カプセルってのは中身が取り出せてこそのものだよな。
だから、「CharやIntにに関係する何か」くらいの認識しかできない。

578 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:13:59 ]
自分でIO型の関数作れば
前のIO関数から>>=で渡された
中身の生の値をちゃんと自由に扱える。

「取り出す方法が無い」んじゃなくて
「>>=を使って(間接的に)取り出すしか方法が無い」が
正しいかも。

579 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:15:56 ]
monadic I/Oの意味論を破壊して喜ぶって、マゾですか?



580 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:16:44 ]
そーゆーのには、
C言語とアセンブラがお勧め(w


581 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:30:25 ]
>576
ワロス
俺も思いついた

582 名前:デフォルトの名無しさん [2005/05/21(土) 16:33:47 ]
もな〜ももなど?

583 名前:デフォルトの名無しさん [2005/05/21(土) 20:30:44 ]
>>549
そのとおりだよね。

584 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 20:44:49 ]
>>583
だからー、
その件はLISPマクロのようには書けないって話だろーが

585 名前:デフォルトの名無しさん [2005/05/21(土) 21:04:10 ]
>>559
名前渡し?遅延評価ってそういうことなのでは?

586 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 21:12:59 ]
名前をキーワードとして扱う?CLtL4の仕様ですか?w

587 名前:566 mailto:sage [2005/05/21(土) 21:23:20 ]
某バイナリファイルのヘッダ構造体の読み込み関数が
だいたい目処がたってきますた。

ところでdata宣言で作った構造体?にたいする
Javaのシリアライズみたいな仕組みやライブラリって
Haskellにはないんすかね?
リフレクションみたいな仕組みがないと無理?

ファイルフォーマットをリストで与えて結果もリストで返すみたいなのは
できそうだけどそれじゃせっかくの強力な型システムが活かせないような、、

588 名前:デフォルトの名無しさん [2005/05/21(土) 21:25:51 ]
>>585
あ、違うか
名前渡してないもんね
普通の意味の値の他に名前も値にできるようでないと圏論的には不完全なようなキガス

589 名前:デフォルトの名無しさん [2005/05/21(土) 21:28:21 ]
とゆーことは変数のポインタでいいのかどうか



590 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 21:39:32 ]
>圏論的には不完全

というと?

591 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 16:51:02 ]
ちょっと質問です。

二項関係 r の反射的・対称的・推移的閉包に (x,y) が属するかどうかを判定する関数
inEqvCl ってのを書いてみたんですけど、もうちょっとすっきりした書き方とかないでしょうか?

inEqvCl :: Eq a => (a,a) -> [(a,a)] -> Bool
inEqvCl _ [] = False
inEqvCl (x,y) s = chk s y x
 where
  chk lst v u | v == u = True
        | v `elem` ux = True
        | otherwise = or $ map (chk lst' v) ux
   where
    lst' = [ p | p <- lst, u /= fst p, u /= snd p ]
    ux = do p <- lst
        if u == fst p && u /= snd p
          then return $ snd p
          else if u == snd p && u /= fst p
            then return $ fst p
            else fail ""

実行例
(2,1) `inEqvCl` [(0,2),(3,4),(5,4),(1,5),(5,0),(6,7),(8,7)]
=> True
(1,6) `inEqvCl` [(0,2),(3,4),(5,4),(1,5),(5,0),(6,7),(8,7)]
=> False


592 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 21:57:54 ]
>>591
こんなのでどうかな。
題意を理解していないので間違ってたらスマソ
import List

inEqvCl :: Eq a => (a, a) -> [(a, a)] -> Bool
inEqvCl _ [] = False
inEqvCl (x, y) s
  | x == y = True
  | y `elem` ns = True
  | otherwise = any con ns
  where
    ns = map snd $ filter ((==x) . fst)  exts
    exts = s ++ map (uncurry $ flip (,)) s
    con n = inEqvCl (n, y) (s\\[(x, n), (n, x)])

593 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:23:13 ]
面白そうなのでオレもやってみた。

-- 同値類のリストを算出
classify :: Eq a => (a, a) -> [[a]] -> [[a]]
classify (x, y) [] = [[x, y]]
classify (x, y) (c : cs)
| x `elem` c = (y : c) : cs
| y `elem` c = (x : c) : cs
| otherwise = c : classify (x, y) cs

inEqvCl :: Eq a => (a, a) -> [(a, a)] -> Bool
inEqvCl (x, y) lis = (not . null) (filter (f x y) (foldr classify [] lis))
where f x y c = x `elem` c && y `elem` c

いろいろ最適化の余地があるが。

594 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:32:57 ]
あ、>>593 間違ってるわ。これだと [(3, 4), (1, 3), (2, 4)] とかで
うまくいかない。

595 名前:591 mailto:sage [2005/05/22(日) 22:42:11 ]
>>592-594

ありがとうございます。
やっぱり短く書けるんですね。

596 名前:デフォルトの名無しさん [2005/05/23(月) 22:10:44 ]
無限のリストだと止まらなくなるかな

597 名前:シミュレーション板GPスレから来ました [2005/05/24(火) 01:12:59 ]
PolyGP: A Polymorphic Genetic Programming System in Haskell
↑のプログラムソース PolyGP.tar って、uclのサイトから消えている様ですが、
どこかにバックアップないでしょうか?
よろしく、おながいします。

598 名前:591 mailto:sage [2005/05/24(火) 05:44:25 ]
とりあえず問題が2つありました。

1. 反射的閉包なんで、inEqvCl (x,x) [] == Trueにならないといけない。

>>592さんのからinEqvCl _ [] = Falseを取り除けばOK。

2. (\\)は最初の1つしか取り除かないので、最初の集合に対称なものがあると拙い。

(\\)の代わりに下の(//)を使って対処。

(//) :: Eq a => [a] -> [a] -> [a]
xs // ys = [ x | x <- xs, x `notElem` ys ]


>>596
無限リストは今回は対象外なので問題ないです。(^^;

599 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 00:42:11 ]
Haskellの配列の更新(//)は一部変更でも配列全部作り直したり
してるんですか?
リングバッファとかに使っても大丈夫ですか?



600 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 01:42:54 ]
600

601 名前:599 mailto:sage [2005/05/27(金) 22:02:30 ]
>>599
自己レス
ttp://d.hatena.ne.jp/tanakh/20040809#p1
ここみるとだめっぽい感じでした

GCが仕事してくれること期待して
配列ガシガシ使い捨てにでもするか

602 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 22:21:03 ]
いつまでたっても関数型のボトルネックだな>配列・構造体
これが解決しない限り関数型が栄えることは無い

603 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 22:21:57 ]
俺達でwadlerを唸らせる解を考えよう

604 名前:デフォルトの名無しさん [2005/05/28(土) 01:00:55 ]
配列も、マクロな視点で見ればただの変数に変わりない
だから、修正された瞬間複製するのが妥当な戦略だろう
しかし、オリジナルが参照されないとわかっているなら複製する必要ないから複製を省略する。
ここまで考えてふと思いついた。
すなわち差分をもっとけばいいんじゃないかと。
配列n番目更新しますた!更新しますた!という情報を各インデクス毎に持っとくわけよ
配列を全て更新しおわたとしても、またさらに更新するかもしれない
その場合はまたその差分を作るわけよ
するとどうだい?
差分として分解された各配列の要素はまるでりすt(ry

おれには難しすぎたようだ!

605 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 01:13:09 ]
>>602
Uniqueness Typing

606 名前:デフォルトの名無しさん [2005/05/28(土) 05:03:54 ]
配列や構造体もモナドにしたら?

607 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 08:38:44 ]
starray とかいうモナドがあると聞いたが
漏れは調べてないので諸君調べて報告してくれ

608 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 11:15:19 ]
マクド


609 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 13:50:31 ]
>>606
つIOUArray



610 名前:デフォルトの名無しさん [2005/05/28(土) 14:11:18 ]
伝説のモナド

611 名前:デフォルトの名無しさん [2005/05/28(土) 14:23:54 ]
ナボナ@亀屋万年堂
www.navona.co.jp/

これのことでしょ?

612 名前:デフォルトの名無しさん [2005/05/28(土) 20:20:45 ]
>>607
それはスタレイました

613 名前:デフォルトの名無しさん [2005/05/28(土) 20:52:42 ]
>>28で紹介されているrrr.jin.gr.jp/のRWikiがNot Foundで見れません。

どうしたらよかとですか?

614 名前:613 mailto:sage [2005/05/28(土) 20:54:47 ]
自己解決しました。
://pub.cozmixng.org/~the-rwiki/rw-cgi.rb にありました。


615 名前:デフォルトの名無しさん [2005/05/30(月) 20:59:12 ]
ハスケルを勉強したい時にはどうしたらいいですか?
日本語の丁寧なチュートリアル文献がありますか?
>>1のは難しいですよ

616 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 21:15:20 ]
>>615
1. haskellで適当なコードを書く
2. -ddump-realCをつけてコンパイル
3. 1と2の結果を見比べる

617 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 21:46:39 ]
>>615
ttp://www.geocities.jp/shido_takafumi/hs/index_hs.html
とか。

618 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 22:05:26 ]
>>616
これなかなか良いね。

619 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 22:21:34 ]
>>615
www.sampou.org/cgi-bin/haskell.cgi?Programming%3aWayToHaskeller&l=jp
とかはどう?




620 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 22:29:19 ]
>>616
Cに落とさなくてもcore言語レベルでいいんじゃない?

621 名前:デフォルトの名無しさん [2005/05/31(火) 09:34:43 ]
mona do !

622 名前:デフォルトの名無しさん [2005/06/02(木) 00:38:18 ]
monadius


623 名前:sage [2005/06/02(木) 14:55:24 ]
Hugsなんだけど

Main> -1 ってやると
-1

Main> ( - 1) 2 とやると

ERROR - Unresolved overloading
*** Type : (Num a, Num (a -> b)) => b
*** Expression : fromInt (-1) 2

 んん?(-) は単項演算子なのか!?


しかしMain> ( - ) 1 2 とやると
-1 とかえってくる。

(-)は二項演算子ってことになってるんじゃなかったのか!?

www.sampou.org/haskell/tutorial-j/numbers.html
>negate は Haskell では唯一採用された前置演算子です。
>これを (-) と書くことはできません。
>それは、こう書けば、減算関数になってしまうからです。

どうなってるの?>識者の方々


624 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 15:56:22 ]
-1
(- 1)
(- 1) 2
の - はnegateのことで単項演算子

(-) 1 2
((-) 1) 2
(1 -) 2
1 - 2
の - は二項演算子

625 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 17:54:00 ]
>>624
それって上の引用の記述と矛盾してないかって事。

HugsはHaskell98モードでも再現したよ。
上の記述が古いのかHugsの独自仕様なのか、、、

実際-1と書けたほうが便利だけどね。

一瞬
「(\x -> x - 1) を 自動的に -1 に変換してるのかHaskell凄えな」

と思ったけど
型が全然違うし。


626 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 19:21:51 ]
括弧のついてない - はその直前に第1引数になるものがなければ単項演算子として解釈されるってだけなんじゃないの。

627 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 20:15:18 ]
>>623
原文は
>negate is the function applied by Haskell's only prefix operator, minus; we can't call it (-), because ...
だから、誤訳かと。
一応報告しておいた。

628 名前:デフォルトの名無しさん [2005/06/02(木) 23:01:09 ]
>>625
>それって上の引用の記述と矛盾してないかって事。

どこが?

629 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 23:12:15 ]
誤訳なのか? "minus"が抜け落ちてるけど大意は変わらない気がするが。
単にセクションと単項のマイナスが構文上区別できなくて、その場合は単項マイナスの方を優先するってだけの話じゃん。
www.sampou.org/haskell/report-j/exps.html#sections
より
> - は文法上、特別扱いで、(- exp) はセクションではなく、前節で説明したように前置の符号反転演算子の適用である。



630 名前:623 mailto:sage [2005/06/02(木) 23:25:28 ]
誤訳か誤読かはともかく納得しますた。
これから安心して-1って書けるよ

631 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 23:27:07 ]
最近すげぇ低レベルの話題ばっかなのは、
やっぱ新入生??

632 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 23:31:21 ]
ヒント:ネタ切れ

633 名前:623 mailto:sage [2005/06/03(金) 01:25:03 ]
レベル低くてゴメンよ
配列の更新についてネタ振ったのも自分

学生じゃないけど
最近Haskellに挑戦してるのさ
初心に帰って楽しい。
ところでソースアップできるところないすか

634 名前:デフォルトの名無しさん mailto:sage [2005/06/03(金) 01:35:40 ]
>>629
>>623の表現だと単項マイナスが存在しないように読めるから、誤訳といっていいと思う。

635 名前:デフォルトの名無しさん [2005/06/04(土) 14:08:09 ]
33 名前: 名無しさん@毎日が日曜日 Mail: 投稿日: 05/06/03 21:46:40 ID: M3Iswrux

type Dame = Human

jobHunting :: Dame -> [Company] -> Maybe Future
jobHunting _ [] = Nothing
jobHunting d (c:cs)
 | hasShokureki d = Just Saiyou
 | (age d) < 25 = Just Saiyou
 | otherwise = jobHunting d cs

636 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 18:42:44 ]
>>602
そんな貴方に APLやJやKはいかが?
関数型言語スレで話題になってたと思うが、過去ログ倉庫入りかも。

637 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 21:35:16 ]
APLやJやKは、関数型言語の源流というだけで、今更な言語。
APL挙げるくらいなら、KRCやFを挙げるよな、まともな人間なら。

638 名前:デフォルトの名無しさん [2005/06/04(土) 21:56:08 ]
Lisp -> ML -> Haskell ってながれじゃないの?

639 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 22:13:17 ]

現在の関数型言語ブームの源流は、
Fortran、BNF、1977年チューリング賞受賞者John BackusのFL(F言語)
で  す  が  何  か  ?



640 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 03:19:55 ]
い い え 何 も ?

641 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 04:13:34 ]

C++  → くそ
C     → くそ
Java    → くそ
Fortran → くそ
ML    → ゴミ
Haskell → ゴミ
Ocaml  → クズ
Ruby   → クズ
Lisp   → クズ
Forth   → クズ
λ-Cal   → アホ
π-Cal   → アホ
μ-Cal   → アホ
φ-Cal   → アホ

642 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 04:14:31 ]
コピペうざ

643 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 04:24:33 ]
>>637
関数型言語の源流というよりは、配列計算言語の源流でわ?
SとかRとか(SASとかSPSSとか)、影響うけてるでそ?

644 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 09:50:00 ]
>>現在の関数型言語ブーム
え、今、ブ、ブームなんですか...... よい時代に生まれたことを感謝します。

645 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 10:06:10 ]
空前のブームのため、Haskellプログラマは企業から引っ張りだこです。

646 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 10:17:20 ]
>>645

   / ̄ ̄ ̄ ̄ ̄ ミ
  /   ,――――-ミ
 /  /  /   \ |
 |  /   ,(・) (・) |
  (6       つ  |
  |      ___  |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |      /__/ /  < なわけねーだろ!!
/|         /\   \__________


647 名前:623 mailto:sage [2005/06/05(日) 16:30:18 ]
とりあえずLha展開関数動いたよ。
www3.atwiki.jp/nanakoso/pages/4.html

だれかモナドを2つ以上同時に使う方法教えて下さい。

648 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 16:56:31 ]
>>647
モナド変換子で合ってる。

649 名前:623 mailto:sage [2005/06/06(月) 01:12:37 ]
www.sampou.org/haskell/a-a-monads/html/transformers.html
やっぱりこの辺りは避けて通れませんか。

モナドをやっつけたと思ったらまた難物が、、、



650 名前:デフォルトの名無しさん [2005/06/06(月) 23:25:48 ]
ええっと、haskellよりmathematicaの方が有能だしいいのでは関数型として?

651 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 23:33:24 ]
放置。

652 名前:デフォルトの名無しさん mailto:sage [2005/06/07(火) 05:06:03 ]
Haskellで数式処理システム作ろう!とかいう噺があったやうな…?

653 名前:デフォルトの名無しさん mailto:sage [2005/06/07(火) 05:44:29 ]
>>649
こんどはCIAか?

654 名前:デフォルトの名無しさん mailto:sage [2005/06/07(火) 22:43:11 ]
いや、FBIです

655 名前:デフォルトの名無しさん [2005/06/10(金) 17:09:38 ]
649>>haskell.org/hawiki/MonadTransformersに簡単なつかいかたとかあるよ。がんばれ!

656 名前:デフォルトの名無しさん [2005/06/29(水) 17:18:46 ]
WinXPにHugsを導入したんですけど、読み込みまでは行くみたいなんですけど
実行してみると結果が表示されません。
例えば
myfactorial :: Int -> Int
myfactorial n
| n == 0 = 1
| otherwise = n * myfactorial (n-1)
というファイルを読み込んで
myfactorial 5
と入力しても何も結果が表示されずに
Main>
という状態に戻ってしまいます。何か原因があるのでしょうか。

657 名前:¬656 mailto:sage [2005/06/29(水) 22:55:14 ]
XPでやってみたところ、GUIのやつ(WinHugs)が駄目なようです。
オプションあたりが怪しいけどサパーリ


658 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 22:20:14 ]
ghcでControl.Monad.Readerをインポートすると
Monad ((->) r)のインスタンス宣言(中味はReaderと同じ)が
付いてくるっぽいんだが、いったいこれは何なんだ?
かなり便利だから積極的に使いたい気もするけど、
ドキュメントされてないみたいだし。

import Control.Monad.Reader

-- 3で割れて、かつ5で割れない自然数
t = filter (liftM2 (&&) ((==0) . (`mod`3)) ((/=0) . (`mod`5))) [0..]

659 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 23:50:56 ]
Vital 使ってる人居ます?
www.cs.kent.ac.uk/projects/vital/



660 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 19:53:36 ]
I/Oをマクロは解決しないか

661 名前:デフォルトの名無しさん [2005/07/11(月) 23:39:29 ]
FpLの抽象構文を拡張して、利用者定義関数が算術式と論理式とを混在してとることができるようにするにはどうすればよろしいですか?評価意味論を適当に拡張するらしいのですが・・・


662 名前:デフォルトの名無しさん [2005/07/11(月) 23:40:00 ]
名前呼びを用いると、ある式eに対してD,ρ├ e ⇒ A kとなる数字kが存在するけれども、値呼びを用いると、D,ρ├ e ⇒ A kとなる数字が存在しない宣言の例ってありますか?

663 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 07:34:27 ]
まず元ねたを書け。話はそれから。

664 名前:デフォルトの名無しさん mailto:sage [2005/07/19(火) 18:29:38 ]
圏論の基礎 日本語訳 S.マックレーン
www.amazon.co.jp/exec/obidos/ASIN/4431708723/qid=1121765296/sr=8-1/ref=sr_8_xs_ap_i1_xgl/250-1176990-6892214

665 名前:デフォルトの名無しさん mailto:sage [2005/07/19(火) 20:19:44 ]
"Catefories for Working Mathematician" (働く数学屋のための圏論) の題名が
「圏論の基礎」になっちまうんだとしたら、

"Categories, Types, and Structures: An Introduction to Category Theory for the Working Computer Scientist (Foundations of Computing Series)"
の題名はどーなるんだ?
「一週間で判る!くもんしきけんろん (いちねんせいむけ)」か(笑



666 名前:デフォルトの名無しさん mailto:sage [2005/07/19(火) 20:31:23 ]
>>664
買っちゃった。

667 名前:デフォルトの名無しさん mailto:sage [2005/07/19(火) 20:43:25 ]
>>666
でどうよ?

>>665
"Basic Category Theory for Computer Scientists (Foundations of Computing)"
「圏論の超基礎」つうのもある・・・

668 名前:デフォルトの名無しさん mailto:sage [2005/07/19(火) 20:47:40 ]
"Categorical Logic and Type Theory (Studies in Logic and the Foundations of Mathematics)"
「論理&数学ラブ♥な人のための、カテゴリー・ロジックと型理論」
なんつう分厚い数学書も買うには買ったけど、これは完全に死蔵本だな、たぶん。

669 名前:デフォルトの名無しさん [2005/07/19(火) 20:49:10 ]
ってな意味で、いきなり訳書を読めるアンタ(>>666)、
幸せ者だぞゴラァ!!!



670 名前:デフォルトの名無しさん mailto:sage [2005/07/19(火) 21:17:36 ]
>>667
誤植が多いみたい。

671 名前:デフォルトの名無しさん mailto:sage [2005/07/19(火) 22:24:11 ]
誤訳じゃなくて誤植ってのが泣けるね。

672 名前:デフォルトの名無しさん mailto:sage [2005/07/19(火) 23:39:47 ]
「できる圏論」

673 名前:デフォルトの名無しさん mailto:sage [2005/07/19(火) 23:40:57 ]
モノイダル圏とか分からない件

674 名前:デフォルトの名無しさん [2005/07/21(木) 16:22:11 ]
www.sampou.org/haskell/tutorial-j/goodies.html
暇だからこれ読んでたんだが、ユーザ定義型のデータ構築子と型構築子の意味が分らん。
誰かなんかC,C++の似たような概念の用語で分りやすい説明キボンヌ。

675 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 18:51:43 ]
データ構築子 <=> classのコンストラクタ
型構築子 <=> template

676 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 21:21:07 ]
型構築子はtypedefでは?


677 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 21:34:50 ]
typedef は多相(総称?)型の定義ができんでしょ。


678 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 23:42:00 ]
CやC++でプリミティブと言われてる型は、Haskellでは全て列挙型
という見方をするの?

data Int = -65332 | ... | -1 | 0 | 1 | ... | 65332
という例が載ってるけど、こんな感じに、
新たに型を作る。作られる型がデータ構築子
そのときに型のデータのインスタンスを列挙する。列挙されるのがデータ構築子。

こんな感じでいいのかな?頭悪くてすいませんねw

679 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 23:43:28 ]
×新たに型を作る。作られる型がデータ構築子
○新たに型を作る。作られる型が型構築子



680 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 23:52:20 ]
しかし新たに型を定義する式のためのキーワードがdataで、
Cのtypedef風なものにtypeが使われてるのはなんかちょっと違和感あるというか。
typeはいいとして、なんでdataなの?

681 名前:デフォルトの名無しさん mailto:sage [2005/07/22(金) 00:54:47 ]
>>680
データ型宣言だから、では駄目かい?

682 名前:デフォルトの名無しさん mailto:sage [2005/07/22(金) 08:43:46 ]
>>681
厨房臭いんですが、dataってのは納得できないですね。
それはまあいいとして、このスレはちょっとレベルが違いすぎるので、
初心者はこっちで質問することにしました。どうもです。

関数型言語Part IV
pc8.2ch.net/test/read.cgi/tech/1083649982/

683 名前:デフォルトの名無しさん mailto:sage [2005/07/22(金) 08:52:28 ]
言語に特有の質問なんだから、このスレのほうがいいんじゃないか?

684 名前:デフォルトの名無しさん mailto:sage [2005/07/22(金) 13:15:03 ]
SMLはtype synonym宣言に'type'、データ型宣言に'datatype'を使う。
Haskellはそいつを参考にしたが、'datatype'は長いので'data'にした。
というのも考えられるかも。

685 名前:デフォルトの名無しさん mailto:sage [2005/07/22(金) 13:45:51 ]
OCamlなら全部typeで済ませられるぞ(逆に言うと宣言の見掛け上区別できない)。

686 名前:デフォルトの名無しさん mailto:sage [2005/07/27(水) 20:28:46 ]
Peyton Jonesの本が面白すぎて夜も眠れません。

687 名前:デフォルトの名無しさん mailto:sage [2005/07/28(木) 01:59:51 ]
HaskellからCleanに宗派変えてみる。

688 名前:デフォルトの名無しさん mailto:sage [2005/08/13(土) 00:17:46 ]
ここでは、こういうネタはスレ違い?
www.geocities.jp/takascience/windows/monadius.html

本家からもリンクされてる。
Monadius
A shoot 'em up game using OpenGL. Takayuki Muranushi also wrote a couple of other games in Haskell.
www.haskell.org/practice.html


689 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 17:04:35 ]
_|_って何から来てるんですか?
数学?



690 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 18:12:56 ]
>>689
うん

691 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 20:28:34 ]
どの分野か教えてもらえますか?これも圏論?

692 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 17:46:57 ]
越田先生@東京工科大のレジュメ www.teu.ac.jp/kougi/koshida/Prog6/

ってのは、今はどこで見れるの?

693 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 18:33:49 ]
www.teu.ac.jp/10/002921.html
もう読めないのかも。Internet archiveにはあるか?

694 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 19:48:40 ]
>>693
亡くなられたのか……まだ若いのに。

プログラム工学VI 授業関連資料
web.archive.org/web/20031014180912/http://www.teu.ac.jp/kougi/koshida/Prog6/index.html

695 名前:デフォルトの名無しさん mailto:sageチラシの裏にでも書いています [2005/09/07(水) 00:28:33 ]
>>693
うへー、マジカヨ。
ご冥福をお祈りいたします。

696 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 00:32:24 ]
貴重な(ry

697 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 01:58:27 ]
この人のチュートリアルをどこかにページにそのままうpしたらまずいのかな?
需要はかなりあると思うのだが。

698 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 14:24:35 ]
それより誰かが成書に仕上げて印税が遺族に行くようにできるとよいな。

699 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 19:19:39 ]
おいおい越田先生、死んだのかよ。面識なんてもちろんないけど
チュートリアル何度も読んでたから、泣けてくるじゃネーか
合掌(-人-)



700 名前:デフォルトの名無しさん mailto:sage [2005/09/13(火) 02:08:53 ]
>>693
ひさしぶりに覗いたら悲しい知らせが。
南無。 そしてありがとう。

701 名前:デフォルトの名無しさん mailto:sage [2005/09/15(木) 09:54:51 ]
mono.kmc.gr.jp/~oxy/hiki.cgi?rtype

702 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 03:51:24 ]
Ruby 2.0 勝手に実装してくれよ

703 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 04:46:06 ]
実装できるほどの仕様が決っていないのでは?


704 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 17:14:40 ]
ここでPugsの話題が出ないのが謎
本家よりずっと先にリリースって、すげーと思わない?

705 名前:デフォルトの名無しさん [2005/09/21(水) 02:03:18 ]
すげー過疎

とりあえずVersion 6.4.1リリースage

706 名前:デフォルトの名無しさん [2005/09/24(土) 00:34:03 ]
引数のパターンマッチング
guard
if-then-else
case-of

って基本的には同じですか?

707 名前:デフォルトの名無しさん [2005/09/24(土) 01:44:59 ]
引数のパターンマッチングと case-of はほとんど同じと考えてよい。
if とパターンマッチは違う。

パターンマッチには真理値で条件を与えることができる。これはガード部とか
言われる。 guard がそのことを指して書いたのであれば、 if と似ていると
は言えるかもしれない。

guard 関数はぜんぜんまったく関係ない。


708 名前:デフォルトの名無しさん mailto:sage [2005/09/24(土) 11:29:13 ]
if b then t else f

case b of {
  True -> t;
  False -> f;
}
の省略記法。この意味では同じといえると思う。

709 名前:デフォルトの名無しさん mailto:sage [2005/09/24(土) 16:38:46 ]
その4つは束縛変数を導入できるかという点で区別することもできるね。



710 名前:デフォルトの名無しさん mailto:sage [2005/09/24(土) 19:55:50 ]
ここにいる奴って、普段何してるんだよ

haskellでオナニーできてるか?

711 名前:デフォルトの名無しさん mailto:sage [2005/09/24(土) 21:19:20 ]
昨日STGで2回…

712 名前:デフォルトの名無しさん mailto:sage [2005/09/24(土) 23:20:51 ]
monadタソ(;´Д`)ハァハァ

713 名前:デフォルトの名無しさん mailto:sage [2005/09/26(月) 18:07:59 ]
★〜彼方の願い星〜★
このレスを見た人は、超ラッキーな人♪
でも、このレスを見ただけじゃ何も起らないよ。
効果を実感したいなら、このレスを5回違うスレにレスしてね♪
だぁい好きなあの人に告られたり、
成績がどんどん良くな★〜彼方の願い星〜★
このレスを見た人は、超ラッキーな人♪
でも、このレスを見ただけじゃ何も起らないよ。
効果を実感したいなら、このレスを5回違うスレにレスしてね♪
だぁい好きなあの人に告られたり、
成績がどんどん良くなって、先生に褒められちゃったり...。
次々とHAPPYな事が訪れます♪
此の頃変なのがいっぱい回★〜彼方の願い星〜★
このレスを見た人は、超ラッキーな人♪
でも、このレスを見ただけじゃ何も起らないよ。
効果を実感したいなら、このレスを5回違うスレにレスしてね♪
だぁい好きなあの人に告られたり、
成績がどんどん良くなって、先生に褒められちゃったり...。
次々とHAPPYな事が訪れます♪
此の頃変なのがいっぱい回っ★〜彼方の願い星〜★
このレスを見た人は、超ラッキーな人♪
でも、このレスを見ただけじゃ何も起らないよ。
効果を実感したいなら、このレスを5回違うスレにレスしてね♪

これが本物の、初代HAPPYメールです♪ってますが、これは本当です!!
これが本物の、初代HAPPYメールです♪って、先生に褒められちゃったり...。
次々とHAPPYな事が訪れます♪
此の頃変なのがいっぱい回ってますが、これは本当です!!
これが本物の、初代HAPPYメールです♪

714 名前:デフォルトの名無しさん mailto:sage [2005/09/28(水) 23:39:39 ]
Emacsのハスケルモ〜ドって使いにくくないですか?
特にインデントが何回も叩かないと希望の位置にこない。


715 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 00:00:52 ]
haskell-mode、出来はすごく良いと思うけど。
インデントはすくなくとも手で揃えるより楽だし、ローテートしてくれるのは良いよ。
関数定義も補完してくれるし。
ただcase 〜 of のインデント位置のポリシーだけは気にいらないな。あれは of の前で改行することを想定しているのだろうか。

716 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 00:29:05 ]
そうですか。もうちょっと頑張って使い込んでみます。
あと、M-x turn-on-haskell-hugs して C-c C-l するとEmacsが固まって
C-g打つまで帰ってこなくなるんですが、何か設定が必要なのでしょうか?
Hugs.Base>
というプロンプトで一回 :load して、プロンプトが
Main>
になった後はすんなり動くんですが。

Emacsのバージョンは21.3です。


717 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 01:20:23 ]
Haskell-modeは優秀だと思う。

718 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 01:40:00 ]
>716
そういう症状は体験したことがないなあ。自分はおおむね
www.haskell.org/haskell-mode/installation-guide.html
のように設定している。
でも最近はもっぱら ghci で hugs を使ってませんねぇ。


719 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 12:16:49 ]
716ですが原因を特定しました。

私の環境ではhugsを起動した直後のプロンプトは
Hugs.Base>
なのですが、huskell-hugs-start-processでcomint-prompt-regexpに設定する
パターンが"^\? \\|^[A-Z][_a-zA-Z0-9]*> "となっていて
ドットを含まないためのようです。これを修正すると問題は解消しました。
(せめてdefvarしていて欲しかった……)

hugsもhaskell-mode.elもFreeBSDのportsで入れたのですが、みなさんの
hugsではプロンプトは別の文字列なのでしょうか?




720 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 20:46:48 ]
>719
少し前(200311_1)には
Prelude>
だったが、今は確かに
Hugs.Base>
になってるね。


721 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 22:28:13 ]
Haskell 使おうっと思ってんだけど、サンプルプログラムがなきゃ分からん。

いきなり Pugs, Rtype, Monadius だと手ごわすぎるので、もうちょい下のレベルで、
おすすめを教えて頂戴。

ウェブアプリを作ることがほとんどなので、Wiki, Blog(Diary), BBS 辺りが理想なんだけど。

722 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 22:57:36 ]
>>721
俺は特に何かをお薦めする程わかっちゃいないが、取り合えず
www.haskell.org/practice.html
を紹介しとく。

723 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 23:04:55 ]
>>722
さんきゅ。

とりあえず、

Flippi: a Wiki clone written in Haskell
www.flippac.org/projects/flippi/

でも見てみるよ。

724 名前:デフォルトの名無しさん [2005/09/30(金) 11:39:06 ]
「連載: Haskellプログラミング」のメモ化のところがよーわからん。
State s t、withState、bindStateのところで詰まってしまった。
誰か日本語でわかりやすく説明して!


725 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 17:42:10 ]
Stateモナドの知識がないと難解だと思う。

type State s t = s -> (t, s)
というのは、現在の状態を受け取って新しい状態とさらに何かを返す関数。
だから、State s t型の値を「状態を変更してついでに値を生み出す仕掛け」と見ることができる。
ここで、「状態を変更せずに常に決められた値xを生み出す仕掛け」は

\state -> (x, state)

と書ける。これがwithState x。
一方、「起動されたとき仕掛けxと仕掛けyが順に起動されたかのように振る舞う仕掛けthenState x y」は
次のように定義できる。

thenState :: State s a -> State s b -> State s b
thenState x y = \s0 ->
  let (_, s1) = x s0 in -- xに初期状態s0を与えて起動、中間状態s1を得る。xによって生成された値は無視。
  y s1 -- yに中間状態s1を与えて起動、終状態と値の組を得る。これはそのまま合成されたしかけの戻り値となる。

thenStateではxによって生成された値を無視したが、この値に基づいて
次に何をするか決めることができないと面白くない。そこで、yとして単なる仕掛けではなく、
「xによって生成された値を受け取って仕掛けを返す関数」を渡すことにする。

bindState :: State s a -> (a -> State s b) -> State s b
bindState x y = \s0 ->
  let (result, s1) = x s0 in -- xを起動し…
  (y result) s1 -- …次に(y result)を起動

726 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 22:49:12 ]
すごくわかりやすい! あなたとても賢いね。
どうもありがとうございました。

State s t を状態遷移図での状態aから状態bへの矢印とイメージしました。
withState x は、状態遷移図で状態aから同じ状態aへ戻る矢印(出力x)ですね。


727 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 11:13:33 ]
Haskell はなかなか自分の思い通りにかけるようにならない orz

728 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 14:23:21 ]
Cとかと違ってプログラマのほうに能力がないと何もできんよな……

729 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 20:48:54 ]
Haskellで書くとバグがなくなると聞いたんですが本当ですか?



730 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 22:48:41 ]
バグは出にくいが慣れないうちは普通にコンパイルを通すだけで苦労する。

731 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 23:21:49 ]
>>729
俺も最初はランタイムエラーは絶対出ないものと思ってたけど
guardとかの場合わけ漏れとか
パターンマッチの不整合エラーがたまにある、、、

ぬるぽとかと比べて感覚的に頻度少ないけどね。

732 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 23:59:39 ]
>>729
いいえ

733 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 00:42:37 ]
整数をゼロで割ると実行時エラーになるし。

完全でないパターンマッチは、ghcなら警告を出させることもできるから、
あとはプログラマの問題という気がするが。


734 名前:724 mailto:sage [2005/10/02(日) 05:03:11 ]
「連載: Haskellプログラミング」の9月号分を読んで
なんとなく理解したところでは
Haskellで評価の順序を強制するためにはCPSのように書くことが必要で、
Monadは継続に付加情報を(連続的にというか玉突き的にというか)持ち回る道具、
do構文はそれを手続き型のように書く構文、
というところだろうか?


735 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 08:35:39 ]
Monadは全てを記号論的に処理する枠組み
doは状態遷移を隠蔽するモナド関数
で合ってる?


736 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 09:44:07 ]
>>734
Stateモナドについてならその理解でいいと思う。
ただし、モナドの意味論は個々のモナドでかわる。モナドそのものは
「do記法で書くことのできるひとまとまりの計算の構成を支援するもの」くらいではないかな。
たとえばIOモナドは副作用が存在しうるような場合の計算の順序の保証する。
Maybeモナドは途中でNothingになるかもしれない計算のまとまりを構成する。
などなど。

あとは「モナドのすべて」を読むといいと思うよ。
www.sampou.org/haskell/a-a-monads/html/index.html


737 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 20:52:08 ]
      /\
    /   \  今このとき,モナドは立ち上がる
   /∧_∧ \    
 /( ´∀`)  /\
 \(    ) /  \    
   \    /       \
    \/         \
          ∧∧∧∧\
         (  ´/) ))ヽ∧
         /   /  / ´∀) ∧∧
       ○(   イ○  (   ,つ, ,゚Д゚)  
       /ヽ  )) ヽ  )ヽ )と  , イ
       (_/(_/(_/(_/ノ(_/⊂ノ> )J
   / ̄Y ̄`|/ ̄^Y ̄ヽ/ ̄ ̄Y

738 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 01:17:46 ]
純粋関数型言語を業務で使ってみたい。

739 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 01:23:35 ]
ぜひ使ってくれ



740 名前:デフォルトの名無しさん mailto:sage [2005/11/02(水) 01:11:11 ]
あなたの業務が研究・教育ならいくらでも…

741 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 10:35:10 ]
hasktags って使える?
誰か、 GHCmacs でも作ってくえ。

742 名前:デフォルトの名無しさん mailto:sage [2005/11/12(土) 10:24:33 ]
行列をhaskellで実装する場合、単位元ってモナドで表現する?

743 名前:デフォルトの名無しさん mailto:sage [2005/11/12(土) 19:00:45 ]
連載 Hakellプログラミングの8月号にのってる
両替問題の最初でつまづいてしまいました。

cc ::Amount -> [Coin] -> Count
という関数を
a < 0でないとき
cc a (c:cs) = cc (a-c) (c:cs) + cc a cs
と定義してますが、なぜこれで指定した金額aの両替の組み合わせ個数になるんですか?

初歩的な質問で済みませんが教えてください。

744 名前:デフォルトの名無しさん mailto:sage [2005/11/12(土) 19:11:23 ]
>>743
貨幣cを一つ以上使う場合の数は、cを一つ使った後の両替を考えて、cc (a-c) (c:cs)
貨幣cを一つも使わない場合の数は、cc a cs
この和が求めるものになる。

745 名前:デフォルトの名無しさん mailto:sage [2005/11/12(土) 19:30:54 ]
>>744
なるほど。
うまく考えるものですね。
ありがとうございました。

746 名前:デフォルトの名無しさん mailto:sage [2005/11/12(土) 20:31:08 ]
簡単な例を作るといいよ
10円 を 5円 と 1円 で両替して樹形図を書く

747 名前:デフォルトの名無しさん mailto:sage [2005/11/12(土) 21:27:57 ]
高校でやったろ? 順列と組み合わせ。

748 名前:デフォルトの名無しさん mailto:sage [2005/11/12(土) 21:38:52 ]
>>747
お前がいまやってるんだろ?ww

749 名前:デフォルトの名無しさん mailto:sage [2005/11/13(日) 02:16:56 ]
母関数を使えば簡単に計算できるのに



750 名前:デフォルトの名無しさん mailto:sage [2005/11/13(日) 09:14:43 ]
>>748
今頃やってるとしたら遅すぎると思うんだが。
夏頃やってたような。昔の記憶だが。

751 名前:デフォルトの名無しさん mailto:sage [2005/11/13(日) 22:17:02 ]
>>749
母関数から特定の項を取り出す手間とボトムアップに解を構成する手間はいっしょ

752 名前:デフォルトの名無しさん mailto:sage [2005/11/14(月) 06:49:45 ]
>>751
母関数から特定の項を取り出すのは紙と鉛筆で簡単にできるでしょ。
わざわざプログラムなんて書く必要もない。


753 名前:デフォルトの名無しさん mailto:sage [2005/11/14(月) 20:09:53 ]
>>752
詳しく頼む。

俺は Polya の本にその母関数の一般項の計算には DP を使うと書いてあったので、無理だと思ってたんだが。

754 名前:デフォルトの名無しさん mailto:sage [2005/11/14(月) 23:45:35 ]
>>753
組み合わせ論の入門書やConcrete Mathに出てるようなんじゃだめなの?

755 名前:752 mailto:sage [2005/11/15(火) 00:16:35 ]
>>754
Concrete Math の p.331 から 2 ページくらいで計算されてるやつ?

この例の最初のところに「一般の効果の場合に計算するのはとても難しい」とあるし,
その下で計算されてる {1, 5, 10, 25, 50} の特殊例においても「trick」と称される
計算をしないといけないし,さらに,最終結果に残ってる A_k は多項式を実際に展開しないと求まらない.

というわけで,これは一般性が無いという意味で >>744 が母函数から簡単に出るという
説明にはなってないし,特殊例を含めても >>752 の「簡単」ってのはどうかと思う.


コレじゃないならポインタください.

756 名前:デフォルトの名無しさん mailto:sage [2005/11/15(火) 21:19:55 ]
Haskellのデータ構築子が非正格なのは便利なんだけど、
一般の関数が非正格で嬉しいことってある?
デフォルトで正格でも良いような気がするんだが。

757 名前:デフォルトの名無しさん mailto:sage [2005/11/15(火) 21:44:13 ]
以下の二つが大きいそうだ
・相等性についての議論が楽になる(単純に置換するだけでOK).
・制御構造を自分で設計できる.
 cond p x y | p         = x
            | otherwise = y           
 recip x = cond (x == 0) 0 (1/x)
 は正格なら recip 0 = bot, 非正格なら recip 0 = 0.

758 名前:デフォルトの名無しさん mailto:sage [2005/11/15(火) 22:37:48 ]
>>757
反応ありがとう。

>・相等性についての議論が楽になる(単純に置換するだけでOK).
なるほど。気付かなかった。
でも、現状だとIntのaccumulator引数付きのちょっとした末尾再帰関数なんかを書くたびに
明示的に正格評価を指定しないとパフォーマンスに打撃があるわけで、
「議論が楽になる」って利点はこのコストに見合うんだろうか。

…などと思うのは俺が言語を使うだけの立場だからかな。

>・制御構造を自分で設計できる.
これはどちらかというと特殊なケースだから、非正格をデフォルトにする理由としては弱いと思う。

759 名前:デフォルトの名無しさん mailto:sage [2005/11/15(火) 22:56:10 ]
もともとは研究者の研究者による研究者のための言語だから、
コストパフォーマンスより性質を重視してるんじゃない?
ていうか、非正格の言語を統一する目的で作られた言語だしね。

正格がデフォルトの言語はMLを始めすでにいっぱいあるから
そっちを使ったらどうかな。



760 名前:757 mailto:sage [2005/11/15(火) 23:37:37 ]
>>758
俺は前者も後者も重要と思ってるんだけどね。まあとりあえず前者について少し強く推しておく。

「three x = 3 」 と定義したときに、「 2 + three x == 5 」 が成立するかどうかを判定することを考える。
これを非正格に評価するとthree x を単純に 3 に置き換えて 2 + 3 == 5 にして、成立する、と結論が出るんだけど、
正格評価だと、x が絶対 bot にならないなら成立、そうでないなら不成立、というようにドメインまで考えないと駄目になる。

特に函数が複雑に組み合わさってる場合に、どこかで bot になる可能性があるとかそういうことを考えるのはしんどいし、
上の函数でもそうだけど、 bot 以外で成立、とかいうのは本質的に成立にしちゃったほうが有意なケースが多いんだわ。

761 名前:デフォルトの名無しさん mailto:sage [2005/11/16(水) 00:02:49 ]
相等性?(0.6 + 0.000000000000000041) == 0.6
浮動小数は代数的ではないとはいえ、言語的にこれでいいでしょうか?



762 名前:デフォルトの名無しさん mailto:sage [2005/11/16(水) 11:02:44 ]
>>756
バックトラックが、普通に全数探索するようなコードを書くだけで実装できてしまうとことか。

763 名前:デフォルトの名無しさん mailto:sage [2005/11/18(金) 20:07:17 ]
どうでもいいこと。

>>757
>  recip x = cond (x == 0) 0 (1/x)

(x == 0) ? 0 : (1/x)

ちゃんとしたコンパイラなら動くきがす。

764 名前:デフォルトの名無しさん mailto:sage [2005/11/19(土) 22:59:06 ]
え、だから?
煽りじゃなく本気で意味がわからん。


765 名前:デフォルトの名無しさん mailto:sage [2005/11/20(日) 16:33:55 ]
Hugs.Base> let n C r = product [n-r+1..n] `div` product [1..r] in 5 C 3
10

766 名前:デフォルトの名無しさん mailto:sage [2005/11/24(木) 22:06:26 ]
なんとなくtak関数を書いてみたらCより速くてびっくりした。
thunkの絡まない計算は速いんだな。

767 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 20:34:53 ]
Cのコンパイラオプションは?

768 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 21:57:49 ]
>>767
-O2。
言われて気づいたけど、-O2 -fomit-frame-pointerとしたらCの方が速かった。

769 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 22:44:24 ]
haskellには実行速度を求めないで美しいライブラリを書いて欲しいんだよね。



770 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 22:51:32 ]
Cとかと違って本質的な速度向上がありうるしね.
簡単な記述のほうがプログラム変換に持ち込みやすいし.

771 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 00:09:59 ]
贅沢を言うが、美しいコードが速いコードにコンパイルされて欲しい。
fac n = product [1..n]が末尾再帰のfacと同等なコードにコンパイルされる日は
来るんだろうか…

772 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 01:39:57 ]
つ Clean (速いコード)
import StdEnv, BigInt
factB :: Int -> BigInt
factB n = foldr (\x y =y *% x) one [1..n]
//factB n = foldr (%*) one [1..n] // %* がないから


773 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 06:03:30 ]
>>771
product は foldl で書けてるわけだから,もう末尾再帰になってると思うが.

774 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 11:51:06 ]
乗算が全部遅延されるから末尾再帰の意味があんまりない。

775 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 13:49:20 ]
コンパイラが正格性解析して最適化するから問題無し。

776 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 20:37:04 ]
>>772
多倍長演算に時間をとられる階乗は例が悪かったかも。
興味があったのは、リストを作って壊すオーバーヘッドをなくすような最適化。

>>773
ごめん。明示的な再帰で書かれたfacのことを言いたかった。
fac = iter 1 where iter a 1 = a; iter a n = iter (a*n) (n-1)

777 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 23:57:12 ]
>>774
標準 Prelude では sum とか product の fold は積極評価のオペレータを
導入して実装されてるんじゃなかったっけ.

>>776
リストを作って壊しているとは限らない.というか普通はそんなことしてない.
product n = foldl (*) 1 (take n (enumFrom 1)) で定義したとき,
product n
= foldl (*) 1 (take n (enumFrom 1))
= foldl (*) 1 (take (n-1) (enumFrom 2))
= foldl (*) 2 (take (n-2) (enumFrom 3))
...
= foldl (*) n! (take 0 (enumFrom n))
= foldl (*) n! []
= n!
みたいに評価されるから,陽に空リスト以外のリストを作る部分は無い.

778 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 00:46:37 ]
>777
少し前にメーリングリストで「sumはfoldl'を使うべき」という議論があったね。
いま見直したら、議論は「可算は常にstrictと言えるか」とかいう方向にシフトしちゃってたけど。
んで、型クラスを使っている以上、+演算子が常に strict に評価可能である保証はできないので、ということで議論は終結してしまっていた。
実際、 GHC では sum とか product では普通の遅延評価版を使っているよ。

実際問題としては strict 版の sum' と product' が(Listにでも)用意されていればいいと思うんだけど。

ちなみに仕様上も、
www.sampou.org/haskell/report-revised-j/standard-prelude.html
foldl を使うことになっているので、仕様が変わるまでは積極評価版にはならないと考えた方がいい気がする。


779 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 09:25:21 ]
>>778
そかー…….

まあ product [-10000..1] とかを一回の乗算で終わらせられる可能性があるから
戦略上絶対に悪いというわけじゃないんだろうけど癪だなあ.



780 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 11:46:33 ]
>>777
>リストを作って壊しているとは限らない.というか普通はそんなことしてない.
その過程は、細かく言うと(foldlの代わりにfoldl'を使って)
...
= foldl' (*) 1 (take (n-1) (enumFrom 2))
= foldl' (*) 1 (take (n-1) (2:enumFrom (2+1))
= foldl' (*) 1 (2:take (n-2) (enumFrom (2+1)))
= foldl' (*) 2 (take (n-2) (enumFrom (2+1)))
...
のように進むから、1ステップごとにconsを作っては壊す必要があると理解してたんだけど、違う?

>>778
>実際、 GHC では sum とか product では普通の遅延評価版を使っているよ。
IntとIntegerについては正格な版が使われると明言されてる。
www.haskell.org//pipermail/haskell/2005-November/016727.html
といってもDoubleやWord32やRationalは遅延評価版だけど。

781 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 21:24:51 ]
『ふつうの Haskell プログラミング』2005 年度内発売予定
ttp://i.loveruby.net/d/20051129.html#p01

782 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 23:27:32 ]
>>781
ネ、ネタにしかみえねぇ……
マジなのか?

783 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 02:16:17 ]
ふつうの人は、Haskellでプログラミングしない。

784 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 03:23:53 ]
>>781
年内ではなく、年度内かよ。

ホントでたら買わせていただきます。
それよりも誰か The Craft of Functional Programming  を訳してください。英語で挫折してしまいました。

785 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 17:10:48 ]
世界よ、ありがとう

786 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 08:44:52 ]
出版も遅延評価で行なわれます。
宣言はされても評価はされません。

787 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 10:42:49 ]
参照透明性の関係で版ごとにタイトルが違うか、IOモナドに包まれて出版されます。
後者の場合、読者もIOモナドに包まれないと読めません。

788 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 11:12:00 ]
つまり必要が生じたときにその箇所だけ読まれるわけじゃなくて前から順番に読まれることが保証されているといいたいのか

789 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 11:45:40 ]
読んだ知識をIOモナドの外で活用したい場合はどうしたらいいですか?



790 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 14:43:53 ]
unsafePerformIO

791 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 17:22:33 ]
年度内って、来年の四月までってこと?

792 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 20:00:58 ]
i.loveruby.net/d/20051129.html#c04

12月内ってことじゃない?

793 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 20:06:08 ]
出版前に査読してもらうってことだろ。

794 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 20:11:14 ]
>>793
ごめん。reviewの意味を勘違いしていた。

795 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 10:02:29 ]
ごめん、以下のプログラムが読み解けないです
「addの戻り値型は引数型の関数となっている、と指定している」
ということらしいのですが、誰か解説してくれまへんか

class Add a b c | a b -> c where
add :: a -> b -> c


796 名前:デフォルトの名無しさん mailto:sage [2005/12/17(土) 10:41:58 ]
functional dependency ってヤツだよ。
それは関数ではなくて、「aとbからcの型は一意に定まる」ことを示している。
www.cse.ogi.edu/~mpj/pubs/fundeps-esop2000.pdf


797 名前:デフォルトの名無しさん [2005/12/18(日) 04:23:05 ]
"100" から 100 を取り出すような関数はどうやりますか

798 名前:デフォルトの名無しさん mailto:sage [2005/12/18(日) 08:25:32 ]
readの作り方?

799 名前:デフォルトの名無しさん mailto:sage [2005/12/18(日) 08:52:39 ]
>>797
read "100" :: Int



800 名前:デフォルトの名無しさん mailto:sage [2005/12/18(日) 09:26:10 ]
>>798
そうです。

>>799
言葉足らずですみません。

801 名前:デフォルトの名無しさん mailto:sage [2005/12/18(日) 11:11:46 ]
foldl (\x y->10 * x + (ord y - ord '0')) 0

802 名前:デフォルトの名無しさん mailto:sage [2005/12/18(日) 14:55:27 ]
浮動小数の桁数指定で最後の桁の次を四捨五入の場合は?


803 名前:デフォルトの名無しさん mailto:sage [2005/12/18(日) 15:29:40 ]
何の話?

804 名前:デフォルトの名無しさん mailto:sage [2005/12/19(月) 15:50:32 ]
roundN :: (RealFrac a, Integral b) => a -> b -> a
roundN x n =
(frac (round (x * b))) / b
where b = 10 ^^ n
frac = fromRational . toRational


805 名前:797 mailto:sage [2005/12/20(火) 01:34:36 ]
>>800
誰だ君…

>>798
そうです。

>>799
言葉足らずですいみません。

806 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 08:55:38 ]
Webで以下のような定義を見かけたのですが、

data List a = Nil | Cons a (List a)

instance Eq (List a) where
Nil == Nil = True
Cons x xs == Cons y ys = xs == ys
_ == _ = False

Cons x xs == Cons y ys = xs == ys
の部分って正しいの?
このままだと (Cons 1 (Cons 2 Nil)) == (Cons 1 (Cons 3 Nil))
が True になるんだけど・・・
かといって
Cons x xs == Cons y ys = x==y && xs == ys
とかすると、最初のほうの x==y で
「add (Eq a) to the class or instance method `=='」
とか怒られるんだけど、じゃーどう定義したらよいのか
わかりまへん

807 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 09:00:55 ]
>>796
ありがとうございます。まだよくわかってないですが
読んでみます。

808 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 10:37:50 ]
>>806
リストという構造自体の等価性の問題ですから
中身は関係ない(というか見ちゃいけない)のです

add (Eq a) to the class or instance method `=='
とあるように,
中身の等価性まで考えようとしたら,List に格納できるデータ型
が Eq クラスのインスタンスに制限されてしまうのです.

809 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 10:47:45 ]
>>797じゃないですがReadのインスタンスの作り方わからない…
readsPrecとreadListの作り方のチュートリアルか何かないでしょうか(できればShowの方も)
Haskell98Report読んでもサッパリです



810 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 13:02:57 ]
instance Eq a => Eq (List a) where
 Nil == Nil = True
 Cons x xs == Cons y ys = x == y && xs == ys
 _ == _ = False


811 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 18:59:40 ]
>>808
なるほど。納得です。

>>810
こうすると出来ますね。
Eq クラスのインスタンスに制限されるってこういうことだったのですね
有難うございました。

812 名前:デフォルトの名無しさん mailto:sage [2005/12/21(水) 23:26:59 ]
>>809
チュートリアルじゃないけど、GHC.Readにいくつかinstanceの例がある。
cvs.haskell.org/cgi-bin/cvsweb.cgi/fptools/libraries/base/GHC/Read.lhs?rev=1.29;content-type=text%2Fplain

理解したら、是非チュートリアルを書いてくれ。

813 名前: ◆SaiTAMaVxg [2006/01/09(月) 08:32:36 ]
                  ミ  (  ノ
                      / ̄\   ♪ 
                   〜(゚ ∀ 。 )⌒    
                 ♪   \_/  彡
                     ノ ι  ヽ

              ♪  .ハ
            ,ヘ    ((
            )ノ    .))
            (( ∧∧//
               \(゚∀゚ )      
              )  ノ         ヾ     ♪
          ミ シ´ /            ,γ 
         ミ r´  (          ∧∧//   
           ヽ、  ヽ  彡 ♪   ( ゚∀゚)'   
             )  ノ 彡       .,/   ヽ ミ
            ノ ,、(       ノ ノヽ   l
           r´/ ) )   ミ (´/  ノ ノ
          ( (  ( (         γ´ (´
           ヽ)  ヽ\       ノ ハ ヽ   ♪
               ノ  ) .   / ,,/ (,,ノ 彡
         ♪    (__ノ     (_,,ノ


814 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 22:44:58 ]
shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all
パフォーマンスが凄いことになってる。

815 名前:デフォルトの名無しさん mailto:sage [2006/01/23(月) 00:03:09 ]
shootoutって、普通のプログラマが見ても
「Cはやっぱり速いなあ」とか「インタプリタはやっぱり遅いなあ」とか
「Javaはやっぱりメモリ喰いだなあ」とか思うだけで、
「関数型言語頑張ってるな。ちょっと使ってみるか」とは全く思ってくれない罠。

816 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 21:41:39 ]
複数の関数の挙動に影響を与える「オプション」を外部(コマンドラインとか)から指定したいとき
C++みたいな言語の「thisの省略」がすごく羨ましいんだけど、
似たようなことをHaskellっぽく書けないものだろうか。

implicit parameterでそれなりに書けそうだけど、
使われてるのを見たことがない。

みんな明示的に引数を持ち回るのが苦痛じゃないのか?

817 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 23:15:17 ]
>>816
そんな君にReaderT。
StateTでもいいぞ。


818 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 23:46:36 ]
>>817
おー、ありがとう。
この目的のためにReaderモナドで計算順序を導入するのには抵抗があったけど、
既にもなでぃっくなコードにReaderTを混ぜ込むなら面倒が少ないな。

819 名前:デフォルトの名無しさん [2006/02/05(日) 07:29:06 ]
この言語は素晴らしいですか?



820 名前:デフォルトの名無しさん mailto:sage [2006/02/05(日) 07:47:59 ]
最高ですかー!

821 名前:デフォルトの名無しさん [2006/02/05(日) 08:28:42 ]
この言語の、C++に較べて、劣っている点を教えて下さい。

822 名前:デフォルトの名無しさん mailto:sage [2006/02/05(日) 10:42:57 ]
・C++ではテンプレートを使ってコードの抽象性と実行時効率を両立できるけど、
Haskellでは困難。

・C++では名前空間・クラス・関数をかなり自由に相互ネストさせられるし、
ネストに従って細かくスコープを分けてくれるのに対して、
Haskellの名前空間はフラットで、レコードのフィールド名のスコープがモジュールレベルだったり、
関数に局所的な型の定義ができなかったりして不便。

・互いに関連のないものに同じ名前を与えるC++風の多重定義は難しい。
やってできないことはないけど、想定された言語の使いかたではないだろう。

823 名前:デフォルトの名無しさん [2006/02/06(月) 00:21:58 ]
俺は今酔ってるし、ニートだし、最強だ。
モナディウスを参考にシューティングゲーム作るぞ。うぉー!

824 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 00:33:36 ]
>>823
マジ応援してる。

825 名前:デフォルトの名無しさん [2006/02/06(月) 03:51:37 ]
出来上がったコードの実行速度はめっちゃ遅いですか?

826 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 06:11:44 ]
>>825
>>814

827 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 07:33:29 ]
Haskell Hackerが超がんばってキモいコード書けばgcc相当にはなるらしい。
俺のような凡人が普通に書いたらめっちゃ遅い。

828 名前:デフォルトの名無しさん [2006/02/06(月) 09:10:24 ]
ハスケルハッカーがキモいコードを書けば、
バグは少ないわ高速だわの最強のコードが生成されるのですね?

それとも、キモいコードってのはバグを許す代わりに高速にするとかいう類の話?

829 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 22:46:13 ]
shootout.alioth.debian.org/gp4/benchmark.php?test=nbody&lang=java
shootout.alioth.debian.org/gp4/benchmark.php?test=nbody&lang=ghc&id=4

・コンパイルが大変で、
・コードが読みにくい分バグが多く、
・遅い



830 名前:デフォルトの名無しさん mailto:sage [2006/02/06(月) 23:05:14 ]
確かに読みにくいね。

>・コンパイルが大変で、
どういう意味?

831 名前:デフォルトの名無しさん [2006/02/07(火) 05:53:35 ]
ハスケル勉強したいが
参考書がきっと1万とか法外な値段でしょ?
手が出ません><


832 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 06:09:11 ]
数学やってる人がHaskellを直ぐに分かるのは、
集合論と一階述語論理について勉強済みだからなんだよね?

833 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 10:27:09 ]
もうすぐ青木さんの本とかが出るでしょ。
使うだけなら数学の話は特に必要ないよ。たぶん。


834 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 11:00:55 ]
数学の知識はいらないと思うけど、論理学の基礎なしじゃむりだぽ。

835 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 16:18:33 ]
数学に基づいて作られた言語ではあるが,その理念を理解して利用するのと,ただプログラミング言語として利用するのとでは意味が違う。

836 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 16:28:17 ]
「アルゴリズムのプロトタイピングなら C や Java よりも簡単で,早くできます」

とは大学の教官の弁。単位きたかなあ。

837 名前:デフォルトの名無しさん [2006/02/07(火) 16:54:31 ]
早く作れても速く動かないのではなぁ…

838 名前:823 [2006/02/07(火) 17:13:22 ]
>>837
みんなで速くするんだと思います><
CやFORTRANが速いのは多分歴史が長いからだと思ってる

--以下チラシの裏

今日やったこと:eclipseの日本語化とFPの導入

一言:eclipseをeclispだと思ってて「HaskellなのになんでLisp?」とか考えてた。英語弱いな、俺

今からやること:エヴァの映画借りてきて見る

839 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 21:16:35 ]
>>837
だからプロトタイピングなんだろ。
物好きがいろいろやってはいるけど、どう考えても研究用途の言語だよな。
だから意味がないというわけではないが。



840 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 21:46:46 ]
>>839
ちょっとお前は論点ずれてるよな。

841 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 22:30:09 ]
>>830
liftMとか素人なら完全に御手上げ。
あと、何この演算子?ってのを使ってる
(.|. (shiftL i 3)) -- google氏も無視

逆にhaskellが神言語になってる例
shootout.alioth.debian.org/gp4/benchmark.php?test=pidigits&lang=dlang&id=0
shootout.alioth.debian.org/gp4/benchmark.php?test=pidigits&lang=ghc&id=3
d 言語90行
haskell 11行
実行速度ほぼ同じ

理由
Integer型が使える
Monadを使う必要もMonad持ち上げをする必要がない。(配列を使う必要がない)

842 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 18:30:21 ]
>liftMとか素人なら完全に御手上げ。
たぶん、すぐ慣れると思う。

>(.|. (shiftL i 3)) -- google氏も無視
そんなあなたにHoogle
www.haskell.org/hoogle/?q=.%7C.

843 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 21:20:50 ]
>>842
すげー。
型から検索できるのがHaskellらしいな。

844 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 09:48:51 ]
みなさんは、式がどういう順番で評価されていくか
手にとるようにわかるのですか?
私はどう書いたら速いコードになるのかいまいちわかりません。


845 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 13:07:28 ]
評価順序など考えない。何のための遅延評価だと思っとる。

速いコードを書くのが目的なら関数型言語など、いや、
高級言語など使うのはお止めなさい。

846 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 13:19:59 ]
普段は評価順序なんか考えないでコーディングして、
効率が足らないことが分かったとき、そこをアセンブリで書き直す代わりに
既にあるHaskellのコードをいじって効率を確保する、というのは、
それなりに合理的だと思うんだが。

847 名前:844 mailto:sage [2006/02/09(木) 13:44:18 ]
べつに速さで C と張り合おうとか思ってるわけではないのですが、例えばhead $ xs ++ [x]が O(1) かどうかというのは、評価順がわからないとわからないですよね?こういう簡単な例なら私にもわかるのですが、ちょっと複雑になると頭を抱えてしまうわけです。

848 名前:823 [2006/02/09(木) 14:15:14 ]
>>847
多分、どんな順序で書いてもコンパイラが同じように並べかえてくれるんじゃないかなぁ?
コンパイラが考えうる中で最も効率的なコードが出るようにね

849 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 14:16:51 ]
>>847
非正格になれてないだけ。



850 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 19:00:42 ]
個人的経験では、Haskellerの半分はスピードレーサー(最適化おたく)だと思う。

851 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 22:26:31 ]
マシン非依存の部分ならば、
Cよりhaskellの方が速いコードが書けるはず。
なぜならば、見栄え良く、簡潔に書け(簡潔じゃないとコンパイルできない)
無駄なく書けるから。

cだと、綺麗なコードを書くために無駄なコードを書きまくると思うし、
汚い普通のコードを書いても、Haskellと同程度しか速くならない。

cの有利な点は、
gcがない, 配列操作, アセンブラ的コードが書ける, 速いライブラリがある。

と言ってみる。

852 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 22:37:03 ]
非正格だから遅いみたいな話は聞いた事がある。詳細は知らないけど。

>>851
>なぜならば、見栄え良く、簡潔に書け(簡潔じゃないとコンパイルできない)

これは速いコードとは関係ないんじゃないの?
早くコードを書く事は出来るのかもしれないが。

853 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 22:37:18 ]
「マシン非依存の部分」なんてあるのか?

854 名前:デフォルトの名無しさん mailto:sage [2006/02/09(木) 22:39:54 ]
Haskellのソースはスリムだがバイナリがピザデブ杉。

855 名前:デフォルトの名無しさん [2006/02/09(木) 23:28:22 ]
>>853
add

856 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 03:01:51 ]
Haskell学んでC++でメタプログラミング
これ最新最強。newなんていりませんから!

857 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 10:53:42 ]
なんでCはいつも最速なの?

858 名前:fortran mailto:sage [2006/02/10(金) 10:55:08 ]
・・・

859 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 12:50:24 ]
最速はアセンブリ言語



860 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 15:32:11 ]
規模が大きければ
今となってはコンパイラが吐くアセンブラの方が速いことが多いけどね

861 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 15:53:17 ]
あらまあ何言ってるのかしらこの子ったら

862 名前:デフォルトの名無しさん [2006/02/10(金) 16:26:10 ]
コンパイラに負けるなんて、無能を証明してるようなもんだろ。

863 名前:デフォルトの名無しさん [2006/02/10(金) 16:27:27 ]
>>857
危険だからさ。
お行儀の良いハスケルにはわからんだろうがね。

864 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 16:40:00 ]
>>856
バカですか

>>857
バカですか

>>859
バカですか

>>862
バカですか

Haskellに関しての議論としては論点がずれているぞ。
Haskellを創った人たちは、お前らが気にしていることはすべて解っているし、そんなことを解決するための言語にしようとは考えていないんだよ。
言語仕様に関しては。言語仕様という表現も好きじゃないけど。

865 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 16:49:34 ]
へぇ、、ハスケルって読むんだぁ。。
アライグマみたいだね。

866 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 16:54:41 ]
>>864
必死だな。

マジレスすると、「Haskellを創った人たち」の意図などどうでも良い。
いったん言語ができあがってしまえば、それをどう使おうが勝手だ。

867 名前:デフォルトの名無しさん [2006/02/10(金) 16:59:56 ]
ネタっぽいんだが

868 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 18:57:08 ]
Haskellを作った人達って誰になるのかな。
Hudak? Peyton Jones? Wadler?

869 名前:844 mailto:sage [2006/02/10(金) 21:21:30 ]
あれれ、なんだか私の質問で荒れちゃったみたいで申し訳ない。

>>849
これでも、もう一年以上使ってるんですよ。ヘボプログラマーなもんで...。




870 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 22:11:16 ]
書いたとおりに動くCとかと違って,書いたコードよりオーダー単位で計算量が
小さくなる可能性がある Haskell には期待してるんだがなあ.

871 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 22:23:04 ]
O'Camlはむちゃくちゃ早いらしいけど、Haskellとは何が違うんだろう。

872 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 22:42:30 ]
>>871

wiki.ocaml.jp/index.php?%B4%D8%BF%F4%B7%BF%B8%C0%B8%EC%A4%CE%C8%E6%B3%D3

デフォルトで遅延評価なのか、指定したときだけ遅延評価なのか。
破壊的代入を許さないのか、許すのか。

速度に影響しそうな所というとこの辺の違いかな?

873 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 22:46:32 ]
>>870
そんな激しい最適化をするHaskellコンパイラはないと思うが。

874 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 23:59:12 ]
Hudakじゃないだろ。やっぱりSPJが筆頭なんじゃない?

875 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 00:19:45 ]
なんかShootoutのページで、あれ、Haskell速いじゃんと思ったら、
極端に遅い欠点がないのと、重みが高い数個のプログラムで稼いでるだけ
みたいだな。勝ってる数だけで見たらJavaにも勝てない。


876 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 05:57:50 ]
ふつうの本は五月に延期だそうな。

877 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 09:05:41 ]
take 5 $ reverse $ reverse [1..]
で死にやがった。遅延評価も万能じゃないんだな。

878 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 09:28:58 ]
Haskellでは

reverse $ reverse ≡ id

だからなあ。

879 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 09:29:52 ]
> reverse $ reverse ≡ id
reverse $ reverse ≠ id

の間違い。



880 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 11:29:59 ]
reverse :: [a] -> [a]
reverse xs returns the elements of xs in reverse order. xs must be finite.


881 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 11:41:15 ]
>>875
だけって・・・

俺の感覚ではそういうのは、
「なんでもそつなくこなす優秀なやつ」だよ。

一番になること以外には意義を感じないのかい?

882 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 12:26:06 ]
>>881
でも半分以上は平均的に結構遅いんだよ。。。
他の言語みたいに極端に遅いってのはないけど、
そういうのはアルゴリズムの欠陥があったり、その言語での普通の
やり方と違うといった何かしらの事情があることが多いし。


883 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 16:01:00 ]
No JDK -server
ってあるのはJDKでは苦手分野の可能性が高い。

負けてる sum-file や random なんて Cleanがトップだから、
似たようにやれば(内部含む)haskellでもトップになる可能性はある。
(reverse-components はocaml 一位 Clean2位)

javaには負けてるとはいえない。

884 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 16:42:24 ]
Haskell最速! 欠点なし!
この訴えはム板のあらゆるスレで続けていくつもりです。

885 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 16:51:19 ]
自分が作ったものでもないのにそんな風に誇られても。

886 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 16:53:58 ]
>>884
頑張れ
Lisp厨やRuby厨に負けるなよ

887 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 17:34:34 ]
shootoutのあれは、言語の優劣よりもcommunityの熱意とかを反映している気がする。


888 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 18:32:12 ]
>>884
訴えにはそれ相応の証拠がいるんだ。
説得力がある資料を添えて出直せ。

889 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 19:54:29 ]
証拠はshootout



890 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 20:01:18 ]
確かにshhotoutだとcより速いことになってるなwww

891 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 20:04:00 ]
姉は一級Haskeller 〜イケナイSTG-Machine

892 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 20:09:58 ]
>>890
CPU Timeの重みを1にして他を0にしてみ。

OCaml 34.77 1
C gcc 32.82 3
D Digital Mars 29.86 2
Haskell GHC 28.69 0
C++ g++ 25.76 2
SML MLton 24.70 3
Eiffel SmartEiffel 24.36 5
Nice 23.45 3
Java JDK 1.4 -server 22.21 4
Clean 22.01 6
Java JDK -server 21.87 4
Ada 95 GNAT 20.25 4
Java JDK -client 18.84 4
Fortran G95

まあでも正直、この順位も絶対現実とはかけ離れてるよな。
やっぱ、コミュニティの熱意とかが反映されるんだろうな。

893 名前:デフォルトの名無しさん [2006/02/11(土) 20:20:21 ]
>>892
>Nice 23.45 3

プログラミング言語Nice (ワラ

894 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 20:35:56 ]
だから、Shootoutは時々極端に遅いところがあるから
そういう変な順位になる。

例えば、CとHaskellを見るとCのchameneosとregex-dnaが
極端に遅いことがわかる。
こういうのはアルゴリズムの欠陥か何かの特殊事情だから除いて
考えるべきだというのは、具体的な数値を見てみるとよくわかるだろう。


895 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 21:07:44 ]
まあ、Cだと書きにくいからアルゴリズムの欠陥が生まれるわけだ。

896 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 21:09:32 ]
それもあるだろうが、コミュニティの熱意が大きいだろ。
いずれにせよ本来の速さとは違うだろう。

897 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 21:12:07 ]
FortranがJavaより下とか、そういうの見ても相当いい加減な
順位であることがわかるな。

898 名前:デフォルトの名無しさん [2006/02/11(土) 22:00:20 ]
CとかFortranとか手書きアセンブリとか:熱意に対して指数関数的に速くなる
OCamlとかCleanとかHaskellとか:凡人がやっつけ仕事してもそこそこ速い

ってことでFA?

スレ違いだけど、今日初めてGoogle Earthをインスコしたんだ。
超セクシーだね! あんなのをHaskellで書いてみたい

899 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 22:08:03 ]
ワラ^^;



900 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 22:46:14 ]
>>898
後者は言語オタク・エキスパート・信者が、Shootoutのために
必死になってソース作ってそうだけどなw

901 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 22:46:47 ]
はっきり言って、速いとか遅いとかどうでもいい

902 名前:デフォルトの名無しさん mailto:sage [2006/02/11(土) 22:47:40 ]
しかし最適化には興味があるという矛盾 誰か俺を(ry

903 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 01:24:02 ]
こんなの見つけた。
item.rakuten.co.jp/book/1794880

904 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 05:16:07 ]
まあ、DとかC++とかにHaskellが対抗してる時点で
あきらかに実力以上の評価なわけで。
素人が普通に作ったらJavaといい勝負ってのが正直な感想。

905 名前:デフォルトの名無しさん [2006/02/12(日) 09:51:08 ]
東大生みたいな言語だな。
ノーベル賞とまではいかないがなかなか強力に安定した結果を叩きだし、堅物で融通がきかない。

906 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 12:18:48 ]
いや、Haskell自身が速いってことはないと思う。
確かに言語仕様が優れていて、使ってる人が非常に優秀なのは
確かなんだが、速くはない。
Shootoutがいい成績なのも使ってる人が優秀なのと、他の言語が
力入れてないだけ。

907 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 12:33:29 ]
てか、実は>>892は数日前までDやOCamlに勝ってた。
つまり、まだまだ未成熟段階ってこと。
Shootoutの順位なんてそんなもん。

908 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 12:38:23 ]
あほな速度評価結果はってんなよ。
血液型占いと同じぐらいオカルト。
バカですか。

909 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 12:40:15 ]
貼ってる奴もそういうコメントしてる。



910 名前:898 [2006/02/12(日) 13:19:09 ]
最適化なんて弱者のいいわけです><

911 名前:デフォルトの名無しさん [2006/02/12(日) 13:44:58 ]
最適化無き者に実用無し

912 名前:デフォルトの名無しさん [2006/02/12(日) 13:53:42 ]
>>911
ごめんなさい><

ハードウェアが十分速ければ……ってのこそアレだと思った。

913 名前:デフォルトの名無しさん [2006/02/12(日) 14:03:51 ]
>>912
こここちらこそごめんなさい
そんな角をたてるつもりじゃなかったの><

914 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 14:53:46 ]
Haskellは最速!

915 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 14:59:37 ]
非常に残念なことですが、2ch haskellスレには
知的障害者が多数生息している模様です。


916 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 15:14:18 ]
天才と池沼は紙一重

917 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 15:19:27 ]
こっちのスレでやったら?

関数型言語Part IV
pc8.2ch.net/test/read.cgi/tech/1083649982/

918 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 15:21:41 ]
いやいや。
そろそろ次スレだし、Haskell最適化スレと本スレを分ければ良い。
縮小する方向に強制するとろくなことが無い。

919 名前:デフォルトの名無しさん [2006/02/12(日) 15:58:42 ]
>>918
確かに。言語全般の最適化ってなさそうだし



920 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 16:45:19 ]
Haskell最適化スレなんて建てても寂れることは目に見えてる。
このスレでここ数日発言した奴の大半はHaskellを知ってる訳でも学んでる訳でもなく
ただ「話題の」言語を冷やかしにきただけだろ。
スレ一つ消費するほど興味が続くとは思えない。

やるなら、
【数学者】Haskellはクソ言語【オナニー】
pc8.2ch.net/test/read.cgi/tech/1128011645/
を再利用したらどうだろう。

921 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 17:09:47 ]
まあ最近の書き込みのうち大体半分は俺のだしな

922 名前:デフォルトの名無しさん [2006/02/12(日) 17:31:42 ]
>>920
実に的確な分析だ。
見事ここ数日冷やかしに来ていた事を当てられたから困る。

923 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 18:29:23 ]
Haskellは遅い派だが、Haskellを学んでるのは俺だけか・・・

924 名前:デフォルトの名無しさん [2006/02/12(日) 18:35:47 ]
授業の課題で、
「MLやHaskellに代表される関数型プログラミング言語について調べ、
PascalやC言語に代表される手続き型言語との相違を説明するとともに、
関数型プログラミング言語が広く普及していない理由を議論しなさい。」

というのが出たのですが、さっぱりです。
頭のイイおまいら、教えてください!!

925 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 18:48:44 ]
>>924
まず大学と教官の名前を言え。

926 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 18:54:53 ]
>>924
マルチス=ルナカス

927 名前:デフォルトの名無しさん [2006/02/12(日) 18:56:35 ]
すみませんそれはいえない。。特定されるから。
でも、あまり理論的なことよりも実用を重んじると思う。
数学的にどうこう、っていうよりも、プログラミング技法としてどうか?
っていう点かな??

928 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 18:58:32 ]
>>924
宿題は自分でやれ

929 名前:924 [2006/02/12(日) 18:58:47 ]
>>926
すみません。間違って2箇所書いてしまいました。
以後、こちらに一本化します。
明日締め切りなんで、かなり焦ってます。

ほんと、箇条書き程度で良いので、書いてもらえれば助かるかる。



930 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 18:59:39 ]
だが断る

931 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 19:00:31 ]
>>924
どれが分からないの?
サッパリつーが、1 くらいは自分で出来るでしょ。
それ以外は、自分の思う所を書いてくれれば、ヒントくらいは出せると思う。

1. 関数型プログラミング言語に付いて調べる
2. 手続きが他言語と関数型プログラミング言語の相違を説明する
3. 関数型プログラミング言語が普及していない理由を議論する

その前に C や Java は理解してるのかな。

932 名前:924 [2006/02/12(日) 19:03:11 ]
CやJAVAは分かります。
関数型言語もLispで軽く勉強したことはあります。
なので1はできそうなのですが、2,3に関してどういう観点から
話を広げていいのか分からないんです。

933 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 19:03:40 ]
スマソ。

手続きが他言語 --> 手続き型言語

934 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 19:07:07 ]
>>932
2 は関数型言語が利点として上げている事(FAQ とかに書いてある宣伝文句)を
裏返せば、手続き型言語との相違が見えてくるんじゃないかな。
3 は Lisp を勉強していて、何じゃこりゃと思った事を軸にすれば良い。

935 名前:924 [2006/02/12(日) 19:08:07 ]
この板でCやJAVAと対比してHaskellの優位性を主張してる発言が多くあるのですが、
それってまとめるとどういうことになるんですか??
(全然専門的に知らないので、内容がちょっと理解できなくて)
それが分かればその点を広げて論ずることができるかなと思いました。

936 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 19:08:55 ]
>>932
参考文献:なぜ関数プログラミングは重要か

www.sampou.org/haskell/article/whyfp.html

937 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 19:12:09 ]
>>935
アルゴリズムの記述性、プログラムの安全性とか、自分でテーマを設定して、
具体例を少し添えてあげれば良いんじゃないの。

宿題みたいだし、直接的な答えは書かない方が貴方の為になるよね?

938 名前:924 [2006/02/12(日) 19:12:09 ]
>>934
>2 は関数型言語が利点として上げている事(FAQ とかに書いてある宣伝文句)を
>裏返せば、手続き型言語との相違が見えてくるんじゃないかな。
なるほど、確かにそうかもしれませんね。参考にします。

>3 は Lisp を勉強していて、何じゃこりゃと思った事を軸にすれば良い。
いや〜難しい。。「括弧が多い!」ぐらいしか。。w

>>936
ふむふむ、参考にしてみます。

939 名前:924 [2006/02/12(日) 19:15:26 ]
>>937
>直接的な答えは書かない方が貴方の為になるよね?
書いてもらえるなら書いてもらったほうが助かります!笑

あまりプログラムは自分の専門ではないので、、

てか、皆さんやさしいですね。

>プログラムの安全性
手続き型と関数型は安定性が違うんですか??



940 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 19:28:43 ]
>>939
疑問を持ったら、あとは自分で調べてチョ。さっきも書いたけど、
手取り足取りは無しの方向で。個別的な事象で不明な所があったら
また質問して下さい。

941 名前:924 [2006/02/12(日) 19:31:47 ]
>>940
わかりました。
でも、作業の方向は見えたので助かりました。
ありがとうございます。

>>みなさん。
お騒がせしました。気分を悪くしてしまいましたらすみません。

942 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 19:32:49 ]
>>924
www.geocities.jp/shido_takafumi/hs/haskell1.html
web.yl.is.s.u-tokyo.ac.jp/~ganat/memo/aboutHaskell.html

ヌルポ

943 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 19:39:12 ]
ここは教育的なインターネットですね

944 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 20:18:05 ]
unko

945 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 20:30:55 ]
一瞬undoと見間違った。

946 名前:デフォルトの名無しさん [2006/02/12(日) 21:54:03 ]
しまった! こっち見る前に>>924の宿題の答えを書いちゃったじゃないか。
まさかマルチするとは思ってなかった……

947 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 22:03:40 ]
>>924の正解はこれ
「関数型の言語と手続き型の言語の相違は、柔軟性、記述性、簡潔性、堅牢性
などであり、どれをとってもはるかに関数型が優れる。また、ユーザーの頭脳にも
大きな違いがあり、関数型言語が優れる。
普及していないのは選ばれた優れた頭脳の持ち主にしか良さがわからない
からである。」

948 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 22:05:55 ]
>>947 はネタとしても駄目だろ…

949 名前:デフォルトの名無しさん [2006/02/12(日) 22:09:58 ]
関数型が難しいとされるのは一番最初のプログラミング言語が機械語だったからじゃね?
機械語->アセンブリ->フォートラン->C みたいに発展せざるを得なかったというか。
もし手続き型なんて一切知らない人に関数型の教育をほどこせば同じ人が Java を
学ぶより簡単そうだ……。
或いはプログラマの90%が関数型しか知らない世界では「手続き型? あんなのオナニーだよ」
みたいな話になるんだろうな。



950 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 23:14:56 ]
HaskellとAlgol60を比べることはできても、
関数型言語と手続き型言語を比べるのは難しいだろうな。
議論の前提となる関数型言語の定義すら定まってないし。

951 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 23:30:35 ]
漏れみたいな凡人には再帰が理解しにくいよ。
階乗みたいな簡単なのは分かるけどさ。
「なんでループ使わせてくれないんだよぅ」ってなる。

952 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 23:38:45 ]


953 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 23:40:33 ]
間違い


954 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 23:44:37 ]
行列積みたいな一般再帰は確かに嫌だね

955 名前:デフォルトの名無しさん mailto:sage [2006/02/12(日) 23:47:20 ]
>>951
Haskellだと再帰を使わずに済ませられることも多くないか?
たとえば階乗は\n -> product [1..n]と書ける。
IOが絡んだりする複雑な処理を書くときは再帰が要ることも多いけど、
個人的には再帰(やループ)は小さいほどわかり難いと思うから、
これはあまり問題じゃないような気もする。

956 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 04:23:49 ]
俺にはループは再帰にしか見えない。
同じルーチンを何度も呼び出してるだけじゃん。

957 名前:デフォルトの名無しさん [2006/02/13(月) 07:16:58 ]
スタックオバフロー

958 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 07:48:01 ]
遅延評価は俺の生き方そのものだ

959 名前:デフォルトの名無しさん [2006/02/13(月) 13:15:16 ]
ハスケル日本語参考書無いの?



960 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 13:15:45 ]
3ヶ月くらい待て

961 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 22:56:43 ]
>>903 のが予定通り出るのなら1ヶ月程待てばOKだ。

962 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 21:16:16 ]
5月に延びたらしいぞ。

963 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 21:36:00 ]
>>962
それは「ふつうのHaskellプログラミング」の方じゃないか?

964 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 22:18:39 ]
>>958
漏れなんかいつも先行評価だぜ。


値が必要とされたことは一度も無いがな....orz

965 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 22:26:28 ]
漏れの人生はcall by nameなので同じ失敗を何回も繰り返してますorz。

966 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 22:28:40 ]
>>964
イ`
投機的であるとはそういうことだ。

967 名前:デフォルトの名無しさん [2006/02/14(火) 22:30:19 ]
人生で成功するのは Unlambda のコードを読むより難しい

968 名前:デフォルトの名無しさん [2006/02/15(水) 03:36:00 ]
WinXP+GHC+wxHaskell でHello,WorldをコンパイルしてみたんだけどGHCに怒られました

>C:\Documents and Settings\Owner\workspace>ghc hello.hs

>hello.hs:2:0:
> Failed to load interface for `Graphics.UI.WX':
> Bad interface file: C:\wxhaskell\lib\imports/Graphics/UI/WX.hi
> mismatched interface file versions: expected 6041, found 6040

wxhaskell-register.batは実行したし、確かにC:\wxhaskell\lib\imports\Graphics\UI\WX.hiに
ファイルはあります。ぐぐったらブログの記事みたいなんがひっかかったけど
そこでも解決法はみつかりませんでした。CUIなHello,Worldは問題なくコンパイル出来ました。
wxWidgetsもインスコしなきゃダメかな、と思ってmsiファイルで入れてみたけど、どうも違うようです。
偉い人、どうか教えて下さい。

969 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 03:40:04 ]
>>968
--makeか-package wxでよかったはず。



970 名前:969 mailto:sage [2006/02/15(水) 03:41:08 ]
ごめん。エラーメッセージをちゃんと読んでなかった。忘れてくれ。

971 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 03:53:56 ]
>>968
wxHaskellのWindowsパッケージがghc6.4用なのが問題だと思う。
ttp://www.cs.uu.nl/research/projects/proxima/wxhaskell-bin-msw2.4.2-ghc6.4.1-0.9.4-0.zip
一応ここに6.4.1用のバイナリがある。

972 名前:デフォルトの名無しさん [2006/02/15(水) 04:06:39 ]
ありがとうございます!
wxHaskell 入れなおしてコマンドラインオプションも入れたらコンパイルできました!
よーしパパ、テトリス作っちゃうぞー! って感じです!!!1123

973 名前:デフォルトの名無しさん [2006/02/16(木) 22:27:46 ]
富豪的プログミングに溺れちゃって!
いつか泣きをみても知らないんだから!

974 名前:デフォルトの名無しさん mailto:sage [2006/02/16(木) 22:52:27 ]
成り上がりと富豪を一緒にしないでください

975 名前:デフォルトの名無しさん [2006/02/16(木) 22:57:22 ]
ハスケッてる連中の偏差値は高いに違いない

976 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 09:58:27 ]
変さ値?

977 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 10:55:25 ]
ところで君偏差値いくつ?

978 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 13:01:03 ]
変さ値なら60前半の自信はある(w

979 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 15:02:44 ]
その変さ値とやらの最大値と平均値と標準偏差はいくつなんだ?



980 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 15:18:51 ]
なんだ。かまって君か(w

981 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 09:33:10 ]
「Java仮想マシンで動作するHaskell風スクリプト - Jaskell 0.7」
pcweb.mycom.co.jp/news/2006/02/17/341.html

これが噂の「大地クオリティ」か・・・




982 名前:デフォルトの名無しさん [2006/02/18(土) 16:06:30 ]
haskellのここがキレたって所ある?

983 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 21:52:03 ]
Haskell最高! 死角なし!

984 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 18:43:57 ]
>>982
言語仕様が分からずにキレた

985 名前:デフォルトの名無しさん mailto:sage [2006/02/20(月) 15:27:16 ]
viで編集しにくくてにキレた

986 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 00:26:20 ]
モナドがなかった頃、遅延ストリームが「一個ずれている」気がしてキレた!

987 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 00:51:43 ]
そんな頃があったのか・・・・

988 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 00:55:13 ]
正確に言えば、IOモナドがなかった頃、だな。 Maybe なんかはあったが、モナドなんて知らんかったよ。

989 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 22:23:38 ]
SplitObjs=yesでghcをビルドしたら丸一日たっても終わってなくてキレた



990 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 22:45:20 ]
去年の五月に書いて放置していたコードを読み返してたんだが、
百行に満たないライブラリコードなのに何をやってるのか全然分からなくて驚いた。
コメントを書いておかなかった俺も悪いが、Haskell恐るべし。

991 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 23:45:05 ]
読めないコードでもバグは絶対無いのでご安心を。関数型だからね。

992 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 02:31:21 ]
埋め

993 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 03:05:10 ]
次スレ
pc8.2ch.net/test/read.cgi/tech/1140717775/

994 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 09:52:00 ]
umeume

995 名前:デフォルトの名無しさん [2006/02/24(金) 10:19:39 ]
995

996 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 16:27:10 ]
999

997 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 17:21:52 ]
夢にHaskellが出てきた。
Haskellは少女だった。
形を持たず、目に見えず、概念的で、しかし可憐な、少女だった。
俺は喜び勇んで肉体関係を要求した。
拒否された。

998 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 17:22:49 ]
その日は、平凡な、曇り空の日だったが、気分は高揚していた。
俺の意志が、思考力が、誰かに支えられているような気がした。
出てくる発想はいつにも増して非凡だったし、
日常の、つまらない判断までも的確だった。
そして俺は、誰がこの研ぎ澄まされた思考を運んできてくれたのかを、
よく知っていたのだ。

999 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 17:24:31 ]
全能感は一日しか続かなかった。
俺は戸惑うことなくそれを理解し、受け入れた。
それでも、ときどき、気がつくとGHCiを起動していることがある。
そんな時、俺は、こう打ち込むのだ。



1000 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 17:25:22 ]
Prelude> :m +Control.Monad.Fix
Prelude Control.Monad.Fix> fix error

関数型プログラミング言語Haskell Part3   - 完 -

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<259KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef