[過去ログ] 関数型プログラミング言語Haskell Part16 (978レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
661: デフォルトの名無しさん [sage] 2011/12/08(木) 21:42:23.60 AAS
小飼弾相手だったら北畠を応援したくなる
662: デフォルトの名無しさん [sage] 2011/12/08(木) 21:49:10.68 AAS
HaskellスレでなぜにPerlの話題?
663: デフォルトの名無しさん [sage] 2011/12/09(金) 01:49:11.82 AAS
キモいからよそでやって
純粋にHaskellの話してよ
664: デフォルトの名無しさん [sage] 2011/12/09(金) 13:41:34.98 AAS
人格分裂してるな・・・怖い怖い
665
(2): デフォルトの名無しさん [] 2011/12/09(金) 17:02:50.08 AAS
質問です。
[1, 2, 3, 4, 5, ...] のようなリストを受け取って、
先頭から各要素までの総和のリスト [1, 3, 6, 10, 15, ...] を返す関数の上手い書き方ありますか?
666
(1): デフォルトの名無しさん [sage] 2011/12/09(金) 17:10:54.87 AAS
頼むからこのスレでそんな質問しないでおくれよ
667
(1): 665 [sage] 2011/12/09(金) 17:11:31.39 AAS
すみません、scanl で行けました。

>>666
どこで質問したらよかったのでしょうか?
668
(1): デフォルトの名無しさん [sage] 2011/12/09(金) 17:51:36.87 AAS
>>667
いいえ、ここで良いです
そのような下等な質問に文句があるというのなら
Haskell初心者質問スレを立てていない彼らにこそ非があります
堂々とここで質問なさい
669: デフォルトの名無しさん [sage] 2011/12/09(金) 18:27:59.93 AAS
ここまでワンセット
670
(1): デフォルトの名無しさん [sage] 2011/12/09(金) 18:31:27.74 AAS
質問です。
[3,1,4, ...] のような任意の整数のリストを受け取って、
各要素の階乗のリストを、同じ階乗の計算を繰り返さずに計算する方法はありますか?
つまり、3!を計算した後で4!を計算する場合では
前回計算した3!の答えを使って4*3!=4*6=24
と計算するコード。
671
(1): デフォルトの名無しさん [sage] 2011/12/09(金) 18:33:46.88 AAS
Haskellはscanlとか便利な関数多くて助かるけど、一所懸命実装してたら実は既にライブラリにあった事も時々ある。
欲しい機能から検察出来れば良いんだけど、皆さんはどうやってますか?
主な関数は覚えちゃってるのかな?
672: デフォルトの名無しさん [sage] 2011/12/09(金) 18:35:16.11 AAS
factorials :: [Integer]
factorials = scanl (*) 1 [1..]

f :: [Int] -> [Integer]
f = map (factorials!!)

(!!)でO(n)掛かるのが嫌ならリストじゃなくて木で持っておく必要がある
673
(1): デフォルトの名無しさん [sage] 2011/12/09(金) 18:36:28.60 AAS
>>671
Hoogleなら型から検索できる
しかしPreludeとData.Listくらいは使ってれば大部分覚えることになると思うけど
674: 665 [sage] 2011/12/09(金) 19:30:51.46 AAS
>>668
ありがとうございます。
675: デフォルトの名無しさん [sage] 2011/12/09(金) 20:56:28.53 AAS
>>670
階乗特有の性質を利用するのではなく、一般的に解決する方法のひとつとして
メモ化 memoization という方法もある

関数の一度計算した戻り値とその引数とを紐付けして記憶させておき、
次回同じ引数に同じ関数を適用した時、再計算する代わりに、
記憶しておいた戻り値を即座に返すメカニズム

正格的な方法、非正格的な方法、いろいろある
もし興味があるなら調べてみると良い
676: デフォルトの名無しさん [sage] 2011/12/09(金) 21:05:38.92 AAS
調べてみるといい! ( ー`дー´)キリッ
677: デフォルトの名無しさん [sage] 2011/12/09(金) 21:06:48.74 AAS
>>673
レスありがとうございます。
Hoogle便利ですね。
自分で実装した機能が、ライブラリ関数数個の組み合わせで出来る事もあるので、
やっぱり主な関数は覚えちゃった方が良さそうですね。
678: デフォルトの名無しさん [sage] 2011/12/10(土) 13:46:56.31 AAS
Haskell Wiki の Tutorials のページ
外部リンク:www.haskell.org

単なるチュートリアルページへのリンク集だが、数が豊富で結構使える
679: デフォルトの名無しさん [sage] 2011/12/10(土) 14:33:34.03 AAS
Cabal でパッケージをインストールする際に、
「ソースへのリンクも付いたドキュメント」を生成して登録するには
どうすればいいのでしょうか

Cabal のコンフィグファイルに documentation:True を指定しただけでは、
ドキュメントはインストールされますが、ソースへのリンクは付きませんでした
680
(2): デフォルトの名無しさん [sage] 2011/12/10(土) 14:34:00.51 AAS
haskell始めかけては、他が忙しくなってストップ。忘れた頃に再開、またストップ。
を繰り返してるわいはどれを見ればいいかな。HuttonのプログラミングHaskell本もあるからこれの方がいいかな
681: デフォルトの名無しさん [sage] 2011/12/10(土) 14:44:54.32 AAS
>>680
それだけの情報では貴方が今Haskellで何ができるレベルなのか分からない
682
(1): デフォルトの名無しさん [sage] 2011/12/10(土) 16:38:39.58 AAS
モナド以外は大半を読んで知ったよ。
でももう忘れかけてるから、また見て思い出して、あーこれこれ、はいはい、これね、って感じ。
表面的なことは理解したけど、浅いと思う。
683: デフォルトの名無しさん [sage] 2011/12/10(土) 16:44:52.76 AAS
>>682
RWHを1章ずつ
684: デフォルトの名無しさん [sage] 2011/12/10(土) 16:55:27.75 AAS
じゃあ「プログラミングHaskell」は要らないと思う

モナドも、学ばなければ先に進めない、理解しなければ問題が解決しない、
という時になるまで覚えようとする必要はない
使わなきゃどうせ忘れる

使ってるライブラリがやや古いが「Real World Haskell」見てアプリを作りながら、
内容がやや難しいが「Algorithms A Functional Programming Approach」や
「Pearls of Functional Algorithm Design」見て
関数型らしいアルゴリズムを体験するのが良いと思う

とにかく、表面的なことを理解したのなら、
後はもういっぱいいっぱいアプリを作れ(小粒でも大粒でも、トイでも本格的なものでも)
IOが必要になったら、それからIOを学べばいいし、
GUIが必要になったら、それからGUIを学べば良い

モナドについては、Haskellプログラミング的には
「ある演算ができる箱」でしかないことは自然に分かる
685
(1): 680 [sage] 2011/12/10(土) 18:04:11.70 AAS
なにやら真面目に付き合ってもらってありがとう。
今↓見てざっと思い出した。
外部リンク:d.hatena.ne.jp

じゃあここから何をしようか、いつまでも素数がどうのとか、リストを並べ替えて、とかじゃつまらないよ、って時のRWHかなあ。
あの本もあるんだけどw、話が無駄に長いのが難ですわ。
本当はリスティッシュな週末を過ごして、もっと身に染み込ませるべきなのかも知れませんが。
1-
あと 293 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.012s