関数型プログラミング言語Haskell Part21
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2013/01/21(月) 02:16:16.07ttp://www.haskell.org/
日本語サイト
ttp://www.sampou.org/cgi-bin/haskell.cgi
ttp://www.shido.info/hs/
過去ログ
関数型プログラミング言語Haskell
Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html
Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/
Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/
Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/
Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/
Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/
Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/
Part17 ttp://toro.2ch.net/test/read.cgi/tech/1325510368/
Part18 ttp://toro.2ch.net/test/read.cgi/tech/1331902463/
Part19 ttp://toro.2ch.net/test/read.cgi/tech/1340760070/
Part20 ttp://toro.2ch.net/test/read.cgi/tech/1350428908/
0951デフォルトの名無しさん
2013/03/21(木) 11:25:55.850952デフォルトの名無しさん
2013/03/21(木) 12:03:44.350953デフォルトの名無しさん
2013/03/21(木) 12:10:32.770954デフォルトの名無しさん
2013/03/21(木) 12:17:28.01開発用ツールのスクリプトがタケノコみたいにポコポコ出てくるのも当然
0955デフォルトの名無しさん
2013/03/21(木) 13:32:36.37?
0956デフォルトの名無しさん
2013/03/21(木) 20:16:20.820957デフォルトの名無しさん
2013/03/21(木) 21:23:29.51相変わらずコンパイルが遅い言語はどこが新しいのか分かりにくい
0958デフォルトの名無しさん
2013/03/21(木) 22:49:33.70言語の名前は最後じゃなくて頭のほうに持ってきてほしい
0959デフォルトの名無しさん
2013/03/21(木) 23:00:29.250960デフォルトの名無しさん
2013/03/22(金) 13:32:02.690961デフォルトの名無しさん
2013/03/22(金) 21:48:04.93以前にC++で作ったソフトをHaskellで作りなおしてみた。
なんとか完成させ、新しい機能もちょっと追加。
とりあえず作った…。これから修正していこうと思う。
ソースコードサイズ(両方ともに未参照コード含む)
C++版 167kB
Haskell版 54kB
計算時間
C++版 1.77秒
Haskell版 38.2秒
0962961
2013/03/22(金) 21:48:55.34コードは短くなったけれども、思ったより短くない。
C++版とHaskell版は、両方ともスパゲッティ状態。
Haskellのほうが短いとはいえ、スパゲッティ状態もまた
濃縮されているようなものだ。
Haskell版のほうが計算時間が長いのは仕方ない。
"はじめてのHaskell"ではね・・。
これから改善して2秒以内にするのを挑戦してみる。
0963デフォルトの名無しさん
2013/03/22(金) 21:50:26.930964961
2013/03/22(金) 22:31:56.28「パズル」の間違いです。
「プログラミングin Haskell」は最後まで読んだ。
「すごいHaskell楽しく学ぼう」は、今200ページ前後を読んでいる最中。あと半分・・。
0965デフォルトの名無しさん
2013/03/22(金) 23:19:11.190966デフォルトの名無しさん
2013/03/22(金) 23:20:34.18++がくっ付いた記号とかλとか→とか⇒とか
記号がおかしくて初心者は実際に全角を入力するし頭おかしいよあの本
2冊目としては良書なんだけどなんで記号使ってんだボケって言いたい
0967デフォルトの名無しさん
2013/03/22(金) 23:51:54.62Haskell系の論文だと、そういう記号わんさか出てくるな。
著者も研究者だし、この本もどちらか言うと
関数プログラミングを学問として学ぶ系だと思うよ。
0968デフォルトの名無しさん
2013/03/22(金) 23:53:26.790969デフォルトの名無しさん
2013/03/22(金) 23:54:35.260970デフォルトの名無しさん
2013/03/22(金) 23:55:03.810971デフォルトの名無しさん
2013/03/22(金) 23:58:41.14確かになんかネラー臭のする言葉がたまに出るけど…
0972デフォルトの名無しさん
2013/03/22(金) 23:59:34.32日本語版は巻末に書中で使われている記号と実際の入力方法の対応表が巻末に付いてるし
そこまで怒るようなものでもないんじゃないか
0973デフォルトの名無しさん
2013/03/23(土) 00:05:06.89勘違いするな
>>968 のことだ
0974デフォルトの名無しさん
2013/03/23(土) 00:11:08.890975デフォルトの名無しさん
2013/03/23(土) 00:13:50.62いや、学問は知識欲を満たすためのオナニーだよ。
0976デフォルトの名無しさん
2013/03/23(土) 00:35:43.48本文第一章あたりで堂々と説明しとけば初学者でも迷わないと思う
0977デフォルトの名無しさん
2013/03/23(土) 00:54:56.290978デフォルトの名無しさん
2013/03/23(土) 01:02:35.32しかしそこがいい
0979デフォルトの名無しさん
2013/03/23(土) 05:14:06.880980デフォルトの名無しさん
2013/03/23(土) 07:29:02.39それでcouでそのリスト内の4の数を求めたい。しかし、返された値は0。なぜ?
get :: [Int] -> [Int]
get list = case (list) of
[] -> []
(x:xs) -> [x | x <- xs, x > 3]
cou :: [Int] -> Int
cou (list) = case (get list) of
[] -> 0
(x:xs) -> case (x > 3) of
True -> 1 + cou xs
_-> cou xs
0981デフォルトの名無しさん
2013/03/23(土) 07:40:52.02ちゃんと順序立てて言葉足らずにならないように説明してよ
0982デフォルトの名無しさん
2013/03/23(土) 08:56:08.270983デフォルトの名無しさん
2013/03/23(土) 09:14:01.92getは数値が3以下の数全てを除いたリストを返したい。例えばget[1,4,6,2,4,1]のリストは[4,6,4].
そして、couの関数でgetの返されたリスト([4,6,4])の中に何個’4’の数があるか?を数えたい。この場合[4,6,4]には4が二つあるので2を返してほしい。
cou [2,5,4,3,4] >> 2
式が間違ってました。
get :: [Int] -> [Int]
get list = case (list) of
[] -> []
(x:xs) -> [x | x <- xs, x > 3]
cou :: [Int] -> Int
cou (list) = case (get list) of
[] -> 0
(x:xs) -> case (x ==4) of
True -> 1 + cou xs
_-> cou xs
0984デフォルトの名無しさん
2013/03/23(土) 09:28:34.82http://codepad.org/RlPkEbhg
0985デフォルトの名無しさん
2013/03/23(土) 10:40:38.45*Main> get [4,4,5]
[4,5]
*Main> get [4,5,4]
[5,4]
*Main> get [1,4,6,4,2]
[4,6,4]
*Main> get [4,6,4,2]
[6,4]
*Main>
0986デフォルトの名無しさん
2013/03/23(土) 10:50:27.19getが何か変だと思い始めてます。
Main> get [3,4,2,4,5,4]
[4,4,5,4]
Main> cou [4,4,5,4]
2 -- 3を返して欲しい所
こんな感じになってしまいます。
get [4,4,5]の戻りはなぜ[4,4,5]ではなくて[4,5]になるのでしょうか?またget[4,6,4,2]もしかり。
0987デフォルトの名無しさん
2013/03/23(土) 11:04:15.91get list = case (list) of
[] -> []
(x:xs) ->
if x > 3 then x : get xs
else get xs
ようやく直せました。x | x<- xsではxが判定に入っていなかったからでした。色々ありがとうございました。
0988デフォルトの名無しさん
2013/03/23(土) 11:06:56.43あとcase式は使わずにトップダウンで定義を書き下したほうがいいと思うよ
0989デフォルトの名無しさん
2013/03/23(土) 11:07:29.69○トップレベル
0990デフォルトの名無しさん
2013/03/23(土) 11:10:58.21( x : xs ) -> [x | x <- (x : xs), x > 3]
こう直すだけでいい筈です。
0991デフォルトの名無しさん
2013/03/23(土) 11:12:42.38>>988 の言うように 983 にある get の最後の行
(x:xs) -> [x | x <- xs, x > 3]
がおかしかった。
この書き方したいなら、
(y:ys) -> [x | x <- (y:ys), x > 3]
とかとするか、
y@(x:xs) -> [x | x <- y, x > 3 ]
とかかな。
0992デフォルトの名無しさん
2013/03/23(土) 11:19:25.790993デフォルトの名無しさん
2013/03/23(土) 11:37:03.05使わないと機会損失だから同時に使うみたいなパターンは危ない
0994デフォルトの名無しさん
2013/03/23(土) 11:43:18.840995デフォルトの名無しさん
2013/03/23(土) 11:54:25.38内包=if elseのことでしょうか?
(x:xs) ->
| x > 3 = x : get xs
| otherwise = get xs
だとエラーが出てしまったのでif使ってしまいました。まだよく分かっていないのですが、caseならcase, | なら |で統一した方がいいのでしょうか?ま〜名前がcouなのは適当に打ったからです。
0996デフォルトの名無しさん
2013/03/23(土) 12:22:00.991はこんな感じで:
haskell.org
ttp://www.haskell.org/
日本語サイト
ttp://www.sampou.org/cgi-bin/haskell.cgi
ttp://www.shido.info/hs/
過去ログ
関数型プログラミング言語Haskell
Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html
Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/
Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/
Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/
Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/
Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/
Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/
Part17 ttp://toro.2ch.net/test/read.cgi/tech/1325510368/
Part18 ttp://toro.2ch.net/test/read.cgi/tech/1331902463/
Part19 ttp://toro.2ch.net/test/read.cgi/tech/1340760070/
Part20 ttp://toro.2ch.net/test/read.cgi/tech/1350428908/
Part21 ttp://toro.2ch.net/test/read.cgi/tech/1358702176/
0997デフォルトの名無しさん
2013/03/23(土) 12:31:21.96こういうプログラムを書きたかったんじゃないのかな。
get :: [Int] -> [Int]
get list = case (list) of
[] -> []
(1 : xs) -> [x | x <- xs,x > 1]
(2 : xs) -> [x | x <- xs,x > 2]
(x : xs) -> [x | x <- (x : xs), x > 3]
cou :: [Int] -> Int
cou (list) = case (get list) of
[] -> 0
(x:xs) -> case (x ==4) of
True -> 1 + cou xs
_-> cou xs
0998デフォルトの名無しさん
2013/03/23(土) 12:38:35.91http://toro.2ch.net/test/read.cgi/tech/1364009659/
0999デフォルトの名無しさん
2013/03/23(土) 14:00:30.971000デフォルトの名無しさん
2013/03/23(土) 14:01:24.9410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。