関数型プログラミング言語Haskell Part3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGhttp://www.haskell.org/
日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
Http://www.teu.ac.jp/kougi/koshida/Prog6/index.html
過去ログ、関連スレは>>2-5
0369346
05/02/06 20:18:15http://that3.2ch.net/test/read.cgi/gline/1104975149/1-9
0370デフォルトの名無しさん
05/02/07 04:10:200371デフォルトの名無しさん
05/02/09 05:46:41宿題が出て難しすぎるので誰か助けて下さい。
0372デフォルトの名無しさん
05/02/09 10:53:26*(1,y) *(x,+(a,b)) -> {x->1,y->+(a,b)}
のようなプログラムを作れ、という課題が出たのですがサッパリわかりません。
どなたか教えて下さい
0373デフォルトの名無しさん
05/02/09 20:23:43もう一年やれば、理解も深まるよ。
0374デフォルトの名無しさん
05/02/09 20:27:030375デフォルトの名無しさん
05/02/09 20:42:110376デフォルトの名無しさん
05/02/09 20:59:080377デフォルトの名無しさん
05/02/09 22:14:31これ、数学板のmathematicaスレでも見たぞ
マルチすんな、消えろ
0378デフォルトの名無しさん
05/02/09 23:27:110379デフォルトの名無しさん
05/02/09 23:49:57カッ
0380デフォルトの名無しさん
05/02/10 01:16:45[("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)]
のように返さなければいけないことです。どうすればいいかさっぱりです。
誰か教えて下さい。
0381デフォルトの名無しさん
05/02/10 02:07:40[[24, 24], [23], [6, 6], [5]]
ここまで来りゃ後はなんとでもなるだろ。
0382デフォルトの名無しさん
05/02/10 02:35:51ありがとうございます!!
0383デフォルトの名無しさん
05/02/10 02:43:000384デフォルトの名無しさん
05/02/10 04:08:380385デフォルトの名無しさん
05/02/10 07:31:12演算子 $ って初めて見ましたが,なかなか便利ですね.
勉強になりました.
0386デフォルトの名無しさん
05/02/10 09:38:360387デフォルトの名無しさん
05/02/10 23:12:49いろいろ考えたのですがなんともなりません。
むしろここから先が一番大変なのではないかと・・・
まじで教えてくれませんか?
0388デフォルトの名無しさん
05/02/10 23:27:15ろ。これくらい自分で考えてみ。でないとただのカンニングだろ。
0389デフォルトの名無しさん
05/02/11 03:20:58rank :: [[a]] -> [(Int, a)]
rank x = [(i, n) | (i, a) <- zip [1..] x, n <- a]
確かに理解は非常に足りません。ですが、本を読んでも、
いろいろなほかのテクニックを知ってもループという基本的なことを
するのがこんなに難しい言語は初めてなのです。
なんらかのライブラリを使う必要があるのかもしれないと思って、
Listのところは大体見たんですが結局何も見当たらずもうダメです。
こんな簡単であろう問題に3時間も4時間もかけてる自分がすごい嫌になってきます。
0390デフォルトの名無しさん
05/02/11 04:03:590391デフォルトの名無しさん
05/02/11 04:52:51ヒントを下さい。お願いします。
0392デフォルトの名無しさん
05/02/11 08:05:13[1..]のところを["1st", "2nd", ...]というリストにすれば終わりだろ。
英語のカウントに勝手に直してくれるようなライブラリはないだろうな。
0393デフォルトの名無しさん
05/02/11 09:27:09> [1..]のところを["1st", "2nd", ...]というリストにすれば終わりだろ。
そのリストはどこまで続くんですか?
0394デフォルトの名無しさん
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"
0395デフォルトの名無しさん
05/02/11 10:08:15> にならなきゃいけないので前のリストのカウントを常にしないと次のランクが
> 分からないわけです。これをどうしたものかと・・・・
rankingの関数が、
1)降順ソートずみ整数の(部分)リスト (初期値 全リスト)、
2)これまでに処理した整数の数 (初期値 ゼロ)、
3)直前に処理した整数 (初期値 -1とか、入力リストに絶対あらわれないもの)、
4)直前に処理した整数のランク (初期値 ゼロ)、
のよっつを引数として取ればいいんじゃないの?
> 与えられた整数に英語のカウントをつける関数はもう作ってあるんですが。
> | otherwise = show x ++ "th"
これだと
21番目は "21th"
22番目は "22th"
になっちゃうよ……
0396デフォルトの名無しさん
05/02/11 10:51:06じゃぁ条件分岐のところ、xの代わりにmod x 10で。
rankingの関数はやはり4つも引数が必要ですか・・・・。
じゃぁそれでちょっと頑張ってみます。
0397デフォルトの名無しさん
05/02/11 11:01:33でもなんかぎこちない感じ・・・。これでいいのでしょうか。
もっとスマートなやり方があるような気がしてなりません。
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"
0398392
05/02/11 11:01:34失礼。俺なら395よりは、
groupBy (\x y -> snd x == snd y) $ zip [1..] $ reverse $ sort [5, 6, 6, 23, 24, 24
]
から変形するな。
0399どうでしょうか,,,
05/02/11 11:11:26rank :: 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)
0400デフォルトの名無しさん
05/02/11 11:14:24全然違うじゃないか。
それにmainはIO aの型であるべきもので、使わないほうがいい。
0401デフォルトの名無しさん
05/02/11 11:21:2711th,12th,13th
そんな私はsort使うためにimport Listするとhugsにレイアウトが違うと怒られる駄目駄目プログラマ。
0402401
05/02/11 11:27:110403デフォルトの名無しさん
05/02/11 11:28:33setRankS :: [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)]
0404デフォルトの名無しさん
05/02/11 11:41:07またまた貴重なご指摘ありがとうございます。
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
0405401
05/02/11 11:52:24111th,112th,113th,211th....。序数詞は怖い。もうないよね。
0406デフォルトの名無しさん
05/02/11 12:03:11| mod x 100 == 12 = s ++ "th"
| mod x 100 == 13 = s ++ "th"
これ足せばOK?
0407デフォルトの名無しさん
05/02/13 13:11:540408デフォルトの名無しさん
05/02/13 15:11:50> 宿題しか話題のない悲しい言語
達見かな。で、どうしてそうなのかという質問がなされ、欠点が羅列され、
いやそんなことはない理論的に美しいという反論が出て、数少ない実用例も示され……
0409デフォルトの名無しさん
05/02/13 16:36:48Lisp系は処理系が簡単だから使われるけど、それ以外は…
0410デフォルトの名無しさん
05/02/13 17:23:540411デフォルトの名無しさん
05/02/13 17:32:09OCamlをフリーソフト(非オープンソース)を書くのに使っていますが。
0412デフォルトの名無しさん
05/02/13 18:02:270413デフォルトの名無しさん
05/02/13 18:21:280414デフォルトの名無しさん
05/02/13 18:26:54作れます。
0415デフォルトの名無しさん
05/02/13 18:33:34http://web.comlab.ox.ac.uk/oucl/work/ian.lynagh/Hetris/
http://fxp.hp.infoseek.co.jp/haskell/HSDL/
0416デフォルトの名無しさん
05/02/13 18:55:01仕事に使っても大丈夫?
0417デフォルトの名無しさん
05/02/13 22:14:38こういうコンテキストで話すなら、商用に使われてナンボだと思うが。
俺自身は宿題用だろうが日曜プログラマーの趣味の道具だろうが構わんけど。
0418デフォルトの名無しさん
05/02/14 15:53:01まあオープンソースだから、sourceforge.net/projects/ghc/やメーリングリストを見て
自分で判断してくださいということで。
ver6.4のリリースが延び延びになっているのが気になる。
RCのソースもコンパイルできないし…(@Mac)
0419デフォルトの名無しさん
05/02/14 20:24:12あくまでも最先端の研究用なので、品質に期待してはいけない。
0420デフォルトの名無しさん
05/02/19 08:34:16Perlの代わりぐらいにはなりますか?
0421デフォルトの名無しさん
05/02/19 11:17:33もう少しHaskellのこと勉強してから出直してきたら
0422デフォルトの名無しさん
05/02/19 12:09:32言語の完成度じゃなくてghcの完成度を聞いてるんだけど。
0423デフォルトの名無しさん
05/02/19 13:10:180424デフォルトの名無しさん
05/02/19 23:54:19特に、コンパイル結果がおかしいというのは一つも知らない。
言語拡張を使ってコンパイラが落ちるのはあったが、gccだってよく落ちたし。
品質に期待してはいけないってのは、なんか具体的な理由があるの?
0425デフォルトの名無しさん
05/02/22 20:08:410426デフォルトの名無しさん
05/02/22 22:01:110427デフォルトの名無しさん
05/02/23 09:12:550428デフォルトの名無しさん
05/02/23 19:20:040429デフォルトの名無しさん
05/02/23 20:51:01信頼性低すぎて使ってられないよな。
0430デフォルトの名無しさん
05/02/23 21:14:20ghcの信頼性 >>>>>>>>> gccの信頼性
0431デフォルトの名無しさん
05/02/24 11:00:34|| ̄ Λ_Λ
||_(Д`; ) 「なに?このスレ・・・」
\⊂´ )
( ┳'
0432デフォルトの名無しさん
05/02/26 23:31:32ttp://pggirls.asukaze.net/index.php?cmd=read&page=イ霖/Haskell、ソ、
0433デフォルトの名無しさん
05/02/27 03:01:220434デフォルトの名無しさん
05/03/02 14:39:26http://www.haskell.org/hawiki/TheMonadReader
0435デフォルトの名無しさん
05/03/05 17:27:020436デフォルトの名無しさん
05/03/05 21:47:090437デフォルトの名無しさん
05/03/06 11:08:100438デフォルトの名無しさん
05/03/08 23:33:410439デフォルトの名無しさん
05/03/09 00:11:320440デフォルトの名無しさん
05/03/09 00:24:000441デフォルトの名無しさん
05/03/09 20:45:50しかし、その後、、、
0442デフォルトの名無しさん
05/03/10 00:24:38でお勉強。本国から雑誌や新聞、書籍を送ってもらい、専属の通訳と翻訳家
つきで、食事はその国にあわせたもの。日本人受刑者は狭い部屋ですし詰め。
しばらくして、別のニュースでホームレスが川に落ちたインスタントラーメンを
取ろうとして転落、そのまま凍死してしまったという記事を読んで、せつなくな
ってしまった。
新聞で日本で暮らす脱北者のインタビュー記事。「生活保護の支給額が足りない」
「支援してくれないので日本は冷たい」だと。
別の記事で生活保護を受けられなかった母子がおんぼろアパートで餓死。
この国は本当に狂っている。
0443デフォルトの名無しさん
05/03/10 00:32:05目の当たりにすることになったのです。 〜Fin.〜 (2ch.千夜一夜物語)
0444デフォルトの名無しさん
05/03/10 00:58:200445デフォルトの名無しさん
05/03/11 00:20:02大阪府八尾市に支援者が用意した2部屋のアパートで
月約17万円の生活保護と支援者からのカンパで暮らす。
ソウルに住む長男も呼び寄せたいというが、
「いまの生活保護額では厳しい」と悩む日々だ。
http://www.asahi.com/national/update/0310/OSK200503100048.html
確定申告済ませたか?
俺も17万円と2部屋のアパート欲しい。
豊な生活送るには、17万円ポッチじゃ、まだタリン。
おまえ等の税金もっともっと よ こ せ!
0446デフォルトの名無しさん
05/03/11 00:31:200447デフォルトの名無しさん
05/03/11 00:43:130448デフォルトの名無しさん
05/03/12 20:33:410449デフォルトの名無しさん
05/03/12 23:28:12もちろんバグはありませんので、安心してご利用ください。
0450デフォルトの名無しさん
05/03/13 02:47:22http://www.gema3.net/bbs/icon/inore.jpg
0451デフォルトの名無しさん
05/03/14 14:32:350452デフォルトの名無しさん
05/03/14 16:41:23両方
0453デフォルトの名無しさん
05/03/14 23:22:350454デフォルトの名無しさん
05/03/15 00:02:580455デフォルトの名無しさん
05/03/15 08:28:370456デフォルトの名無しさん
05/03/15 08:32:050457デフォルトの名無しさん
05/03/20 10:13:33updated with urgent bug fixes
0458デフォルトの名無しさん
2005/03/23(水) 00:58:19SMFの解析を書き始めてるけど、コストをあまり考えすぎなくてよい気がするし、
Schemeよりも簡潔に書けるし、実行速度もいくぶん速い。
いまのところ、手続き型の処理を書かなくても
(コストを気にしない限りは)それほど書くのが難しくない。
ただ、効率を気にしだすと書き換えるのは難しいのかな?
0459デフォルトの名無しさん
2005/03/23(水) 07:53:51割り込み時の状態はどう定義されるのだろうか。
0460デフォルトの名無しさん
2005/03/28(月) 13:39:35もれも良く分からんが、MIT pressから出てるSICPっていう本読んでると
無限ストリームっていうのが出てくるから、それ使うんじゃない?
A Gentle Introduction to Haskellっていう、Haskellの紹介文書
にも無限ストリームを使ったクライアントーサーバー処理の例が出てくるよ。
0461デフォルトの名無しさん
2005/03/28(月) 15:15:520462デフォルトの名無しさん
2005/03/28(月) 15:16:30はい?もう一度言ってもらえますか?よく見えなかったので。
0463デフォルトの名無しさん
2005/03/28(月) 18:39:05たぶんlazyな言語に対して割り込みのformal semanticsを与えた人はいないと思う。
もの凄く難しい。
>>460
それは単なる入出力ではなかろうか。
0464デフォルトの名無しさん
2005/03/28(月) 20:05:44辻褄が合ってればいい
0465デフォルトの名無しさん
2005/03/28(月) 20:08:300466デフォルトの名無しさん
2005/03/28(月) 23:35:57Charだと数値との比較ができなくて不便。
0467デフォルトの名無しさん
2005/03/29(火) 01:36:32Hugs98 か ghc になると思うのですが。 fink には入っているのは
どちらも Hugs98 2001-Feb と ghc 6.2 で少々古かったです。
0468デフォルトの名無しさん
2005/03/29(火) 02:58:49■ このスレッドは過去ログ倉庫に格納されています