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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
216: デフォルトの名無しさん [sage] 2011/10/21(金) 23:54:23.33 AAS
>>214
214(1): デフォルトの名無しさん [sage] 2011/10/21(金) 22:25:17.56 AAS
>>198
URLぷりーず。
ピアソン?
外部リンク[asp]:www.pearsoned.co.uk
217: デフォルトの名無しさん [sage] 2011/10/22(土) 16:35:01.20 AAS
Winでgtk2hs使えるようにするのって大変っぽい?
linuxだとcabalをapt-getで入れて、gtk-buildingToolsをcabalで入れれば良いだけみたいなんだけど、Winのgtk2hsインストール手順が別になってて複雑っぽい。。。
218
(3): デフォルトの名無しさん [sage] 2011/10/22(土) 16:47:47.56 AAS
最新の Haskell Platform を入れているのなら、以下の手順でインストールできる

1. 外部リンク[php]:www.gtk.org へ行き、
All-in-one bundles のバージョン 2.16 をダウンロード(2.22 ではダメ)

2. All-in-one bundles を展開してホワイトスペースが無いパスに置き、
All-in-one bundles の \bin ディレクトリへのパスを環境変数 %PATH% に追加する

3. GHC インストールフォルダ内の mingw/bin ディレクトリへのパスも
環境変数 %PATH% に追加する

4. cabal install gtk2hs-buildtools
次いで cabal install gtk

最新の Haskell Platform にある GHC のバージョンより
高いバージョンの GHC を入れていたり、別の環境だったりした場合、
どうするかは知らん
219: デフォルトの名無しさん [sage] 2011/10/22(土) 17:18:04.17 AAS
>>218
ありがとう
やってみます
220
(1): デフォルトの名無しさん [sage] 2011/10/22(土) 17:20:56.32 AAS
filter 関数とか、いいかげん型クラスの関数にして、
ライブラリの構造を整理してほしいな
221: デフォルトの名無しさん [sage] 2011/10/22(土) 17:54:16.39 AAS
>>218
失敗したみたいなんですが、cドライブ直下だとダメとか、ありますでしょうか?
222
(1): デフォルトの名無しさん [sage] 2011/10/22(土) 18:02:28.53 AAS
今更気付きましたが、Win7のx64環境です
だからダメと言う事は在るのでしょうか?
ghcにあわせてwin32版を落として設定して失敗してます
223
(2): デフォルトの名無しさん [sage] 2011/10/22(土) 18:28:23.45 AAS
>>222
ごめん、言い忘れてた
私の環境は

OS : Windows7 Home Premium 32bit
Haskell Platform : 2011.2.0.1

これ以外の環境でどうやるかは分からない

> だからダメと言う事は在るのでしょうか?

あるんじゃないかな
64 bit 版の All-in-one bundles でやってみたらどう?
さっき提示したページの上部に [Download] のリンクがあるから、
そこから 64 bit 版へ飛べる(まだ実験バージョンだと書かれているが)
224: デフォルトの名無しさん [sage] 2011/10/22(土) 18:34:53.13 AAS
>>223
私の方こそ忘れてました。
haskellPlatformは同じバージョンを使ってます。

ダメモトで64bit版も試してみます。
225: デフォルトの名無しさん [sage] 2011/10/22(土) 18:50:11.12 AAS
いつのまにか、gtk2hs のサイトが復活してるな

外部リンク:projects.haskell.org
226: デフォルトの名無しさん [sage] 2011/10/22(土) 19:56:50.82 AAS
>>223
何とかWin7の64bitでgtk2hsインストール完了しました

結論から言うと、gtk+の64bit版ではなく、>>218でダメと言われてた2.22で成功しました。。。
(手順はそれ以外は同じで、サンプルコードの動作確認も完了済み)

因みに、64bit版ではインストールに成功するものの、リンクでこけました

これでgtk2hsの勉強が始められそうです

ありがとうございました
227: デフォルトの名無しさん [sage] 2011/10/22(土) 21:33:29.29 AAS
>>186
186(10): デフォルトの名無しさん [sage] 2011/10/20(木) 22:49:20.89 AAS
FizzBuzzを剰余使って書くのはすぐ思いつくけど、以下のは新鮮だった。
どうやったらこんな発想が出来る様になるんだろ。

fizz = cycle ["","","Fizz"]
buzz = cycle ["","","","","Buzz"]

f s n
| s == "" = show n
| otherwise = s

main = print $ zipWith f (zipWith (++) fizz buzz) [1..100]
楽しいね、これ。ずっとスレ覗くだけだったけど、久しぶりにhaskellしたくなってきたよ。
228
(2): デフォルトの名無しさん [sage] 2011/10/22(土) 21:36:15.30 AAS
last [1..1234567890]
を早くする方法で悩み中。
リストの最後の数値は判ってるんだから、すぐに出力出来るはずなんだが…
229
(1): デフォルトの名無しさん [sage] 2011/10/22(土) 21:41:00.81 AAS
>>228
> リストの最後の数値は判ってるんだから

なぜ?
230: デフォルトの名無しさん [sage] 2011/10/22(土) 21:42:14.51 AAS
>>228
リストは先頭からしか読めないからな
最後の数値を即座に取り出したいなら別のデータ構造を考える必要がある
231
(3): デフォルトの名無しさん [sage] 2011/10/22(土) 21:57:41.34 AAS
>>229
既にソースに書いてある。
先頭から見て行かないと判らない、というならそれはHaskellの出来の問題じゃないの?
232: デフォルトの名無しさん [sage] 2011/10/22(土) 22:02:58.14 AAS
>>231
リストのデータ構造の性質
haskellじゃなくても、リストを使えば先頭からしか辿らない
233: デフォルトの名無しさん [sage] 2011/10/22(土) 22:07:14.12 AAS
ハスケルの配列はO(1)なんだっけ?
234
(1): デフォルトの名無しさん [sage] 2011/10/22(土) 22:25:23.49 AAS
>>231
たとえば [1..3] は 1 : (2 : (3 : [])) であり、
「リストを構成するデータ型」の値だ
そして、 : や [] はこのデータ型の「値構築子」だ( : は中置値構築子)

last 関数は、last [] = errorEmptyList "last"; last (x:xs) = ・・・
という形のパターンマッチを行う関数だ

last [1..3] は last (1: (2 : (3 : []) なので、
(x:xs) にパターンマッチし、x=1、xs=(2 : (3 : [])) と束縛する

リストに限らず、データ型の値を作ってる値構築子の引数(この場合は 1 や 2 など)は、
このようにパターンマッチさせて値構築子を剥がす事でしか参照できない

で、リスト 1 : (2 : (3 : [])) がこのようなネスト構造を成している以上、
ネスト構造を「順に剥がしていく」ことでしか中の値は参照できない

ちなみに、f (_:_:x:_) = という関数で f [1..3] などとして一気に x=3 と束縛しようとしても、
内部で順に値構築子を剥がす処理をしてパターンにマッチするかを調べるから同じ事

これを 「Haskellの出来」 というのなら、そうだね、としか言いようがない
235: デフォルトの名無しさん [sage] 2011/10/22(土) 22:55:21.45 AAS
>>234
haskellの出来じゃない

配列と違って、リストはメモリ上に連続して並んでる保証はない
だから、先頭から順々に次に要素のアドレスを参照していくしかない

配列なら、連続して並んでるから、先頭から要素のサイズをステップ数として、希望の位置までアドレスの参照先をずらせば良い

c言語でも同じ事
(haskellで配列使った事ないから分からんが、配列と言うデータ構造の性質としてはO(1)になるはず)
236: デフォルトの名無しさん [sage] 2011/10/22(土) 22:56:21.45 AAS
x要素のサイズ
o要素一つのサイズ
237: SCHEME餃子 ◆8X2XSCHEME [sage] 2011/10/22(土) 23:06:30.13 AAS
>>231
構文木の段階の情報と、実行時の段階のマシンコード (バイトコード) ではレイヤが違う話。
レイヤをまたいでうまいことやれば…というのは個別の実装の最適化をがんばってもらうしかない。
238
(1): デフォルトの名無しさん [sage] 2011/10/22(土) 23:15:23.45 AAS
last [1..3] くらいならコンパイル時に展開してもいい気がするけど
それでじゃあ、この最適化があれば実装の出来がいいかって言われると
うーん
239
(1): デフォルトの名無しさん [sage] 2011/10/22(土) 23:25:42.57 AAS
>>238
うん?
ghciの話じゃないのか

ghcにO2オプション付ければ積極的に最適化されるから、

last [1..3] = 3

みたいに最適化されてんじゃないの?
240: デフォルトの名無しさん [sage] 2011/10/22(土) 23:44:29.49 AAS
>>239
少なくとも GHC 7.0.3 ではされません
1-
あと 738 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s