[過去ログ] 関数型プログラミング言語Haskell Part16 (978レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
9: デフォルトの名無しさん [sage] 2011/10/07(金) 13:58:10.81 AAS
じつによくやった >>1 乙
54: デフォルトの名無しさん [sage] 2011/10/08(土) 18:17:59.81 AAS
ここで挙げられてるような本以外でコードを読んだとしたらPreludeとか自分が使いたくなったライブラリくらい。
229(1): デフォルトの名無しさん [sage] 2011/10/22(土) 21:41:00.81 AAS
>>228228(2): デフォルトの名無しさん [sage] 2011/10/22(土) 21:36:15.30 AAS
last [1..1234567890]
を早くする方法で悩み中。
リストの最後の数値は判ってるんだから、すぐに出力出来るはずなんだが…
> リストの最後の数値は判ってるんだから
なぜ?
545(4): デフォルトの名無しさん [sage] 2011/11/14(月) 22:04:22.81 AAS
Yampa を調べているのですが、意味が分からない部分があります
dpSwitch 関数が第1引数として適用する関数
forall sf . (a -> col sf -> col (b, sf))
これの sf はこの関数においてどのような役割を果たすのでしょうか
771(4): デフォルトの名無しさん [sage] 2011/12/20(火) 23:35:56.81 AAS
>>767767(6): デフォルトの名無しさん [] 2011/12/20(火) 21:54:07.97 AAS
listAは重複がないリストとする。
listBは空でなく、順序は不明だがlistAの要素の連続になっている。
listAの要素であるxを渡された時、それがlistBと比較して前方にあるか
後方にあるか、それともlistBに含まれるかを判定したい。
例で書くと
listA = ["A","B","C","D","E",...]
listB = ["C","D","B"]
xが"E"なら、listBに含まれるB,C,Dに対して「後方」ということになる。
このとき、haskellらしい考え方だとどういうアプローチになる?
俺の手続き脳だと
1. xがlistBにあるかどうかを判別
2. xとlistBそれぞれの要素のlistA内での位置を調べる
3. 調べた位置を比較して「前方」「後方」を判定する
と考えたんだけど、ザ・手続きっぽくてダサいよなぁ、と思って。
1. listAをlistA1 ++ [x] ++ listA2にわける
2. listA1とlistBのintersectionを取って判定
f listA listB x =
if y == 0 then 1 else if y == length listB then -1 else 0
where y = length $ takeWhile (/= x) listA `intersect` listB
920(2): デフォルトの名無しさん [sage] 2011/12/31(土) 16:32:13.81 AAS
これじゃね
外部リンク[html]:hackage.haskell.org
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s