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

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

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

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

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

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

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

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

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

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

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

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

じゃあここから何をしようか、いつまでも素数がどうのとか、リストを並べ替えて、とかじゃつまらないよ、って時のRWHかなあ。
あの本もあるんだけどw、話が無駄に長いのが難ですわ。
本当はリスティッシュな週末を過ごして、もっと身に染み込ませるべきなのかも知れませんが。
686: 2011/12/10(土)18:52 AAS
>>685
ブロック崩しを作れ
687: 2011/12/11(日)01:53 AAS
今Haskellのホットな話題ってなんなの?
イテレーティ?
688: 2011/12/11(日)12:29 AAS
JVMへの移植

だったらいいなあ。
仕方ないのでscalaをつかってるけど。
689: 2011/12/11(日)16:36 AAS
Cabal について質問です

cabal install の --package-db オプションで指定するパスの先には、
どのようなファイルが存在していればpackaheDBとして認識されるのでしょうか
690: 日系アメリカ人 ◆japYJPNx6A 2011/12/11(日)22:21 AAS
タイムイーターの巣窟・・・
691
(1): 2011/12/12(月)10:04 AAS
Haskellでメモ化って相性が悪そうに思うけど、どうやってるの?
692: 2011/12/12(月)10:09 AAS
メモ化とメモカではだいぶん意味が違うなぁ
693
(1): 2011/12/12(月)12:43 AAS
>>691
例えば Conal Elliott のブログにあるトライ木を使ったメモ化
外部リンク:conal.net

彼のブログには他にもメモ化に関するトピックが色々ある
外部リンク:conal.net

Haskell Wiki の解説
外部リンク:www.haskell.org

"haskell メモ化" や "haskell memoization" などで検索すればまだまだたくさんあるだろう
694: 2011/12/12(月)21:50 AAS
メモを持って回る必要があるだけだよね。
695: 2011/12/12(月)22:01 AAS
無限リストとか無限木とかでグローバルにメモを置けば持って回る必要がない
>>693の一番上のリンクとか
696: 2011/12/12(月)22:02 AAS
スコープの話じゃないからグローバルってのはおかしいか
トップレベルにメモを置けば、ね
697
(1): 2011/12/12(月)22:19 AAS
HaskellらしくStateMonad使って持ちまわればいいんじゃね
1-
あと 281 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.020s