[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 06/18 14:14 / Filesize : 205 KB / Number-of Response : 798
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

関数型プログラミング言語Haskell Part18



1 名前:デフォルトの名無しさん [2012/03/16(金) 21:54:23.92 ]
haskell.org
ttp://www.haskell.org/

日本語サイト
ttp://www.sampou.org/cgi-bin/haskell.cgi
ttp://www.shido.info/hs/

過去ログ
関数型プログラミング言語Haskell
Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html
Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/
Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/
Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/
Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/
Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/
Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/
Part17 ttp://toro.2ch.net/test/read.cgi/tech/1325510368/

2 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 21:54:40.15 ]
関連書籍
・Introduction to Functional Programming Using Haskell (2nd ed.)
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0134843460/

・Haskell: The Craft of Functional Programming
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0201342758/

・The Fun of Programming
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0333992857/

・The Haskell School of Expression: Learning Functional Programming Through Multimedia
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0521644089/

・入門Haskell
 ttp://www.amazon.co.jp/exec/obidos/ASIN/4839919623/

・ふつうのHaskellプログラミング
 ttp://item.rakuten.co.jp/book/4052963/

・Programming in Haskell
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0521692695/

・Real World Haskell
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0596514980

・関数プログラミングの楽しみ
 ttp://www.amazon.co.jp/exec/obidos/ASIN/4274068056

3 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 21:55:18.42 ]
関連リンク
・GHC Wiki
 ttp://hackage.haskell.org/trac/ghc/wiki/TitleIndex

・A History of Haskell
 ttp://research.microsoft.com/en-us/um/people/simonpj/papers/history-of-haskell/

・関数型関連の用語集
 ttp://sky.zero.ad.jp/~zaa54437/programming/concepts/

・本物のプログラマはHaskellを使う
 ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/?ST=ittrend

・Haskell API search Engine
ttp://www.haskell.org/hoogle/

・Real World Haskell
book.realworldhaskell.org/read/

・Learn You a Haskell for Great Good!
learnyouahaskell.com/chapters

【簡単な使い方】
1.検索バーに関数名を入れて検索
 例 map
2.検索バーに型名を入れて検索
 例 (a -> b) -> [a] -> [b]

4 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 21:55:48.46 ]
関連書籍 つづき

・Haskell: The Craft of Functional Programming (3rd ed.)
www.haskellcraft.com/craft3e/Home.html
www.amazon.co.jp/dp/0201882957/

・Learn You a Haskell for Great Good!
learnyouahaskell.com/
www.amazon.co.jp/dp/1593272839/

5 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 23:38:20.95 ]


6 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 02:19:03.09 ]
HTTPサーバアプリケーションって、yesod が主流になるのでしょうか?
Mightyってのがあった気がするんですが、廃れたのでしょうか


7 名前:デフォルトの名無しさん [2012/03/17(土) 15:47:42.83 ]
HTTPサーバとか、メモリをどんどん食い尽くしてとんでもないことになる気がするんだけど、きちんとGCしてくれるのかな…

8 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 20:34:27.93 ]
HaskellのGCってJavaの足下にも及ばないの?

9 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 20:37:20.93 ]
Javaみたいにプロのベンダが作ってるわけじゃないしな…

10 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 22:23:40.81 ]
GHCのGCはすごくまともに動くと思う
インクリメンタルGCとか凝ったものはないけど



11 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 23:32:54.22 ]
>>1



12 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 23:50:09.99 ]
>>6
よく知らんが、ちょうど今月号のWEB+DB PRESS vol.67の濃縮還元オレンジニュースって記事には、"Haskellで書かれたWebフレームワーク「Yesod」のチュートリアル"というタイトルで初心者向けのチュートリアル記事を書いたと言う記事がある
その中から引用する限りじゃ、Yesodは主要フレームワークの一つらしい

以下、記事を引用

Haskellの主要Webフレームワークには、Yesod、Happstack、Snapの3つがありますが、その中で比較的初心者が取り組みやすくコミュニティが活発なことからYesodを取り上げています。




中略



HaskellのWebフレームワークがRailsやPHPはもとよりNode.jsよりパフォーマンスに優れていることを示しています。


13 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 01:31:10.89 ]
javaのtomcatみたいなものか…


14 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 01:51:05.93 ]
Yesod は Hello World を見ると初めギョッとするが、
考え方を理解すると、非常に洗練されてて理にかなっていることが分かる

15 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 14:39:00.03 ]
C 言語側で次の定義の関数 f をインポートする場合

enum EEE { EEE0, EEE1 };
void f (enum EEE x) { ... }

Haskell 側では、次のようには「できない」ですよね

data TTT = TTT0 | TTT1 deriving (Enum)
foreign import ccall "f" g :: TTT -> IO ()

これは、関数 g の引数を CInt 型にするしか無いのでしょうか

en.wikibooks.org/wiki/Haskell/FFI#Enumerations
ここに、hsc ファイルで #enum マクロを使った列挙型の例がありますが、
これも結局は CInt を Haskell 側のスタブ関数の引数にしていますよね
これって、rule gauss15 とかやらずに 100 とかリテラルを直接書いても
コンパイルは通ってしまうので、型的に安全とは言えないと思うんですよ

これは FFI で列挙型を含む外部関数を使う以上仕方のないことなのでしょうか
構造体は Storable クラスのインスタンスにすれば型的に安全に扱えるので、
列挙型も何かできるといいのですが

16 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 15:23:26.46 ]
hsc2hsは全然使ったこと無いから解らんが、
とりあえずnewtypeにしてんだから、データコンストラクタとアクセサ(例の場合ならIntegrationRuleとrule)をエキスポートしなけりゃ、
モジュールの外ではCIntとして扱えないんだから問題なくね?

17 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:01:26.89 ]
c2hsのenum defineルールを使った場合でも
toEnum 100 :: IntegrationRuleした時に実行時エラー吐くのが関の山だな


18 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:08:26.89 ]
>>16
リンク先では、hsc2hs で作った Enum 型を
次のように使って C 言語側の関数に渡しています(途中省略しました)

status <- c_qag gsl_f
  (realToFrac a)
  ・・・
  (rule gauss)
  ・・・
  errorPtr

この c_qag gsl_f 関数は名前や使われ方から見て
きっとどこかで foreign import されていると思いますが、
リンク先のページにはその定義は書かれていませんね

しかし、おそらく c_qag gsl_f :: CFloat -> ・・・ -> CInt -> ・・・
のような定義だと思います(そうでなければ型エラー)

これ、c_qag gsl_f (realToFrac a) ・・・ 100 ・・・ errorPtr
のように使用しても型エラーにならずにコンパイルが通ってしまいますよね

import された実際の C 言語側の関数で、不正な値の引数を検知して、
戻り値でエラーコードを返すような定義になっていればまだ良いのですが、
そうでなければ何が起こるか分からず、危険です

Haskell 側でこの 100 というリテラルをコンパイル時にエラーとして検知できないか、
という趣旨の質問でした

19 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:12:59.75 ]
>>17
そうなんです

たとえ私が >>15 で「できない」と言った方法が使えたしても、
Enum クラスのインスタンスでは toEnum 関数を使われてしまいます


やはり、こういう時こそ Template Haskell の出番ですかね

20 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:22:13.05 ]
Yesod上でWordPressやEC-CUBEみたいなキラーアプリが出来るといいね
WordPressは単に便利なだけでなくて、コードが抽象化されてなくてベタな設計なのが良くも悪くもサイト制作側で受けてる
EC-CUBEはみんな泣きながらカスタマイズしてるけど、自作したら得られない決済系の実績があるから使ってる
Yesod広めたいんなら、なんでみんなPHP使うのかにヒントがあるんじゃないかな?



21 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:54:34.49 ]
できるとしたら値から型、型から種の持ち上げを利用した
整数リテラルから型レベル整数、そしてそれに対応したインスタンスとしてtoEnumを定義したEnumを使うというものぐらいだな
これならばコンパイル時にS (S (S ...))のインスタンスが見つからないという旨のエラーになる筈

これはリテラルとしてハードコーディングされた(コンパイル時に決まる)整数とそれ以外を区別するということでもあるのだが
そんな機構があっても使いこなせる人は極少数にしかならんというのはC++のconstexprがいい前例となってるのであまり期待はできないな

22 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 17:05:06.11 ]
>>18
リンク先のImports and Inclusionsの項のソース見て欲しいんだが、
エキスポートされてるのはqag関数と定数 gauss15, gauss21...だけになってるじゃない?
本体のc_qag関数とか、IntegrationRule型のデータコンストラクタとアクセサはエキスポートしてないから、外からは使えない。
って、事は(IntegrateRule 100) とかリテラル渡すようなコード書けるのはモジュールの中だけだし、
qag関数に渡ってくるのは、基本的にエキスポートした定数のウチどれかしかありえないわけよ。
だから後はモジュールのテストを十分尽くせば、>15が思ってるような不安はない、って事を言いたかった。

モジュール内でもエラーになるようにしたい、っていうのが趣旨だったならまぁちょっとずれた回答だったかもしれんが。

23 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 18:02:30.69 ]
>>22
すいません、おっしゃってることの意味がようやく理解できました
趣旨を勘違いさせてしまったようです

私が訊きたいことは、FFI で列挙型を含む C 言語の関数を使う場合に、
関数に渡す値の範囲をその列挙型の中に限定する方法は無いか、
という事でした

なぜなら、C 言語の列挙型の値は C 言語の int 型ですが、
Haskell の foreign import の型シグネチャで CInt を使うと、
列挙型の範囲を超えた値も構文上何も問題なく渡せてしまえるからです

リンク先の記事を示したのは、hsc2hs の #enum マクロを使ったとしても、
結局のところアクセス関数が自動的に作成されるだけであって、
アクセス関数を使わなければその関数を使えない訳ではない、
だからその方法も今回の問題解決には使えない事を言いたかっただけでした


今のところ、foreign import の型シグネチャでは CInt 型を使い、
それとは別に、その関数を呼ぶだけの別名の関数を定義し、
そのシグネチャで C 言語の列挙型の値の範囲に対応したデータ型を使い、
後者の関数のみをモジュールから公開することで、
モジュールの利用者には範囲外の値が利用できないようにしています

確かに、このように余計な関数を定義しても、インライン展開されて、
実行速度上はほとんど何の問題もない筈ですが、けっこう無様です

なにか別の案はないですかという趣旨でした
とりあえず、上記の方法で我慢します

24 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 01:31:28.47 ]
おい前スレで指定の確率分布に従うランダムジェネレータが欲しいといったら
自分で作れとか言ってきた奴
staticパッケージという素晴らしいものがあったじゃないか
全く隠してやがったな

25 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 07:09:37.10 ]
www.amazon.co.jp/dp/4903814351/
せっかくこういう本もあるのだから、自作するのもいいと思うんだが

26 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 08:24:52.24 ]
staticじゃねーstatisticsじゃねーかちくしょう

27 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 08:27:21.40 ]
>>25
お前と違って研究費で落ちねえんだよ
高えよちくしょう

28 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 12:33:02.16 ]
>>27
私は地元の図書館で見つけました

29 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 14:00:02.75 ]
>>25
「この商品を買った人は」に、ちくま学芸文庫の甘利先生の本がでてきたのだが、
すごい装丁だw

30 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 15:12:03.39 ]
>>25
こんなニッチな本を誰が買うのかと思ったら機械学習系ブログがプッシュしてました。

隠れた良書「計算機シミュレーションのための確率分布乱数生成法」を大プッシュしたい
d.hatena.ne.jp/echizen_tm/20100710/1278781380
「計算機シミュレーションのための確率分布乱数生成法」でサンプリングのお勉強
d.hatena.ne.jp/echizen_tm/20100712/1278952192
計算機シミュレーションのための確率分布乱数生成法を買った
d.hatena.ne.jp/tkng/20101107/1289118743



31 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 15:54:21.23 ]
これがステルスマーケッティングと言うやつか

32 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 20:13:39.54 ]
べつにステマと言われようがどうでもいいよ

こういうのに興味ある人に、こんな本もあるのかと気づいてほしくて紹介しただけだから

興味が無ければ無視してくれればいい

33 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 20:24:52.96 ]
嫌儲厨はほっとけ

34 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 01:29:25.44 ]
ライブラリリファレンスの右上の隠しリンク便利だな
パッケージのモジュールが3画面分割で見易くなる

35 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 10:02:14.10 ]
隠れてねーじゃん

36 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 10:22:45.60 ]
それよりも、フレーム表示から元に戻すリンクを教えてほしい

37 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 11:04:43.10 ]
>>35
俺IE6なんだ。。。

38 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 11:36:20.94 ]
IE6 ってもう葬儀を済ませたんだろ
安らかに眠らせてあげろよ

39 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 14:12:30.19 ]
Haskelってどんな人種がどんな目的で使うの?優しく教えて

40 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 14:50:48.49 ]
個人的には、人種という言葉自体から差別的な響きを感じて使いたくないが、
目的の方でいうと、たとえば私の仕事場では単位時間辺りの
実質的な仕事の量と質を上げるために利用している

慣れというのもあるだろうが、初めから厳密な型を意識したプログラミングは、
そうでないCなどでのプログラミングと比較して、小さくて大量の(悩ましい)バグが、
コンパイルの段階で潰しやすく、実行時にはもっとアプリに本質的なバグの発見に集中できる
型推論の機能も、間違った型の使い方をコンパイル時に指摘してくれて助かってる

また遅延評価のおかげで、一連の大きな計算において、
その計算を意味の塊を基準にして個々のモジュールに分割しやすい

主にこれら2点が実質的な仕事の量と質を上げるだろうと目論んでHaskellを使い始めたが、
目的は見事に達成されている

ちなみに、たまたま私の部署は処理時間の短縮や計算リソースの削減を
厳しく求められるアプリを作るところではないため、Haskell のデメリットは表に出にくい



41 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 14:56:30.41 ]
Haskell -> C のトランスレータってないですかね?

42 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 14:59:57.29 ]
>>41
GCC がそれをやってくれる

43 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 15:09:00.10 ]
>>41
ghcのコンパイラオプションでCのコード吐けるけど?


44 名前:42 mailto:sage [2012/03/20(火) 15:15:36.89 ]
すまんこ

GCC じゃなくて ghc だ

45 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:21:13.11 ]
Perlで書いたコードは二度と見たくない

Haskellでコンパクトに書けたコードはまた見てみたくなる

Haskellは書くときにうんざりする

多言語は書いた後で絶望する

46 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 23:58:58.60 ]
要素数 n のリストが一つ与えられた時、
要素番号の重複を認めない m (0 <= m <= n) 個の要素からなる組み合わせを
全て集めたリストを作るのって、効率よくエレガントにやろうとすると意外に難しいな

とくにエレガントさって、自分でなかなか納得いくものができんよね

comb :: Int -> [a] -> [[a]]

comb 3 [1,2,3,4]
==> [[1, 2, 3], [1, 2, 4], [1, 3, 4], [2,3,4]]

47 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:22:47.67 ]
SICPで見たような気がするけど気のせいか

48 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:26:20.30 ]
ベタに実装したbinary counting以上簡単にはならないと思う

49 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:32:45.19 ]
リストで縛るとどうあがいても遅そうだな。
要素リストは配列にぶち込んどいて、
インデックスの組み合わせ生成して列挙すんのがベターかね。

50 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 02:20:06.92 ]
let comb n xs = if length xs == n then [xs] else concatMap (\i -> comb n $ delete i xs) xs
こういう感じ?



51 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 03:13:40.85 ]
重複を含む配列からの組合せは?

ABBCDDDEFFGGGG
から5個選ぶ時の組合せを全て列挙せよ

みたいな

重複を許したものを吐き出してフィルターかけるのはもちろん駄目

重複が無い配列の時の組合せを応用してできるの?

52 名前:46 mailto:sage [2012/03/21(水) 07:31:22.42 ]
>>51
俺が取り組んだのは、元のリストは要素の対して重複を許し、
そこから選ぶ要素番号に対しては重複を認めないタイプの問題だった

たとえば、元のリスト xs から 3 つ選ぶ場合、
[xs !! 0, xs !! 3, xs !! 8] は許されるけど、
[xs !! 0, xs !! 3, xs !! 3] は認めない

まだ取り組んではいないけど、重複を許した方が多少記述が減るんじゃないかな

53 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 09:34:51.31 ]
AAAAAAAAAAAAAAAAA `comb` 3
だと酷いことになる

重複するリストから組合せ取り出す局面がどれほどあるか判らないけど

54 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 15:31:44.99 ]
アナグラム作成装置として使えそうだね。


55 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 16:36:15.52 ]
let mapcon f xs = concatMap (\i -> f $ drop i xs) [0..length xs -1]
let comb n xs ys | length ys == n = [ys] | xs == [] = [] | True = mapcon (\(z:zs) -> comb n zs $ z:ys) xs
もうあんまりエレガントとも思えないけど

56 名前:46 mailto:sage [2012/03/21(水) 23:06:26.29 ]
自分で作ったのは、こんな感じ

tails' :: [a] -> [[a]]
tails' [] = []
tails' [x] = [[x]]
tails' xs = xs : tails' (tail xs)

comb1 :: [a] -> [[a]]
comb1 xs = map (:[]) xs

combN', combN :: ([a] -> [[a]]) -> [a] -> [[a]]
combN' f (x:xs) = map (x:) (f xs)
combN f xs = concatMap (combN' f) (tails' xs)

comb :: [a] -> Int -> [[a]]
comb xs n = (iterate combN comb1 !! (n-1)) xs

使用例
comb [1,2,3,4,5] 3
==>
[ [1,2,3], [1,2,4], [1,2,5], [1,3,4], [1,3,5]
, [1,4,5], [2,3,4], [2,3,5], [2,4,5], [3,4,5] ]

n重ループを分解した感じ
自分で書いたコードだが、なんか自分でムカツク

57 名前:46 mailto:sage [2012/03/21(水) 23:34:59.74 ]
>>56
あれ、一つ前のバージョンをコピペってしまった
tails' は init . tails で、定義しないで直に使ってます

結局こんな感じ

comb1 xs = map (:[]) xs
combN' f (x:xs) = map (x:) (f xs)
combN f xs = concatMap (combN' f) (init $ tails xs)

comb xs n = (iterate combN comb1 !! (n-1)) xs

58 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 01:58:12.62 ]
combination だけはポインタある方が楽だわ


59 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 08:19:30.23 ]
comb 0 _ = [[]]
comb _ [] = []
comb n (x:xs) = map (x :) (comb (n-1) xs) ++ comb n xs
どうしてもってんならlength xsを最初に数えて持ち回せ。

60 名前:46 mailto:sage [2012/03/22(木) 12:40:04.54 ]
>>59
美しいですね

こういうセンスあるコードがスラスラと書けるようになりたい



61 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 22:49:41.00 ]
(x :)
ストライクウィッチーズのあの人に見えた

62 名前:デフォルトの名無しさん [2012/03/25(日) 04:51:06.13 ]
(;x;)

63 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 09:08:01.99 ]
(:[]) ← 口を開けた顔; データを1つ食べて内容物のリストを返す


64 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 22:18:09.21 ]
書籍「関数型プログラミングの楽しみ」の練習問題 3.1 を考えてみました

これが非正格関数 h に対しては成り立たないのは、
h が実際にどのような関数なのか定義が分からないことには変換が進まないからでしょうか

例えば xs = Nil とした場合でも、

(h . foldL f e) xs
--> h (foldL f e xs)
--> ・・・ h を何に変換すれば良いのか不明 ・・・

もし h が正格関数なら、ここで

--> h (foldL f e xs)
--> h (let g zs = case zs of Nil -> e; Cons y ys -> f y (g ys) in g xs)
--> h (let g zs = case zs of Nil -> e; Cons y ys -> f y (g ys) in g Nil)
--> h e
--> e'

と変換が進む
もちろんこの場合は foldL f' e' からの逆方向の変換もできて等号が成り立ち、
また xs = Cons y ys の場合も構造的帰納法で等号が成り立つことが証明できる

非正格関数 h に対しては、h から先に評価しなければならず、
例えば極端な話 h = h では一向に簡約が進まなくなるから成り立たない場合もある

という理解で良いでしょうか

65 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 23:14:33.16 ]
hの正格性が必要なのは以下の等式が必要だからでしょう

q (case e of { p1 -> e1; ... pn -> en }) = case e of { p1 -> q e1; ... pn -> q en }


66 名前:64 mailto:sage [2012/03/25(日) 23:21:45.04 ]
すいません、けっこう混乱しています

それは、単に問題文を言い換えただけではないのですか?
結局 >>65 の場合も「なぜ q が非正格関数だとその等式が成り立たないのか」
を説明しないと練習問題 3.1 を説明したことにはならないような気がするのですが

67 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 08:28:16.54 ]
xs := ⊥
で両辺計算してみな

68 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 22:04:32.42 ]
64じゃないけど、

foldL f' e' ⊥ = ⊥
foldLは第三引数について正格な性質を持ってる。
ところが、例えばh = const xで非正格な関数とすると
(h . foldL f e) ⊥ = x
だから、h . foldL f e = foldL f' e'の融合則が成り立つには
hは正格関数でないといけない、ってことかな?

69 名前:デフォルトの名無しさん [2012/03/27(火) 03:34:38.13 ]
Haskellを新しく勉強しようと、
まず日本語マニュアルhrefのインストールを下のサイトを参考に
「Haskellのリファレンスマニュアルを検索するツール href」
d.hatena.ne.jp/pcmaster/20090215/p2

$ make
$ mkdir -p /usr/local/share/href
$ export HREF_DATADIR=/usr/local/share/href
$ make bindir=/usr/local/bin install
$ sudo mkhref ref/*
mkhref: HREF_DATADIR: getEnv: does not exist (no environment variable)
このエラーが出て、ここから先に進めません。
こちらの環境はubuntuでghc7.0.3、libghc-network-devのパッケージがインストール済みです。
getEnv関数が手持ちのパッケージでは用意されていないのでしょうか、環境変数の与え方は大丈夫でしょうか
どなたかインストールできない原因分かりましたら教えていただけるとありがたいです

70 名前:デフォルトの名無しさん [2012/03/27(火) 19:41:43.97 ]
漏れもハスケるためにう分津にGHCとか入れて準備万端だぜ




71 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 21:53:06.47 ]
>>69
sudoでmkhref ref/*したときに、
export HREF_DATADIR=/usr/local/share/hrefが効いてないと思う。
それと、ubuntuって/usr/local/share/href が一般ユーザで作れるのかね?
make instalもスーパユーザでやる必要があると思う。

適当にやるならこんな感じか。
$ make
$ sudo bash
# mkdir -p /usr/local/share/href
# export HREF_DATADIR=/usr/local/share/href
# make bindir=/usr/local/bin install
# mkhref ref/*
おわったらスーパユーザを抜けること

使うときもexport HREF_DATADIR=/usr/local/share/hrefが有効になるよう、
~/.profileかどっかに書いておく。

72 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 22:40:37.45 ]
>>71
Haskell とは何の関係もないが、

$ sudo bash
これやるくらいなら
$ su -
でいいと思うんだが


73 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 23:34:13.91 ]
>>72
su - だと、cdしなおさないといけないじゃん。
まあ、suだけにすればいいかもだが、rootのパスワードはなるべく入力したくないな。

74 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 02:38:54.37 ]
sudo -s はどう?

75 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 03:12:56.50 ]
スーパユーザになれれば何でもいいだろw
>>69は良く分かってないみたいだから、suでrootのパスワード入力させとくのが確実
sudoは設定ちゃんとしてないとうまく動いてくれないかもしれない

まあ、でも、sudo mkhref ref/* が一応実行されてるみたいだから、たぶんsudo -sでもsudo bashでもいいかな

76 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 08:12:21.70 ]
sudo -E でしょ

77 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 23:03:43.68 ]
Control.Exception に bracket 関数があるけど、
これって第1引数のアクション(イニシャライザ)で例外が発生しても、
第2引数のアクション(ファイナライザ)は実行さないよね

bracket 関数と同じ形で、
イニシャライザで例外が発生してもファイナライザが実行される関数は
標準ライブラリで用意されてるの?

それとも自作する必要がある?

同じ形というのは、イニシャライザの戻り値が
ファイナライザやコンピュテーションの引数として利用できるという意味

78 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 08:51:07.11 ]
初期化が終わってないのにファイナライズとな…?

79 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/29(木) 12:38:05.02 ]
>>78
あぁそうか
言われてみれば設計がおかしいな・・・

見直してみるよ
ありがと

80 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 18:39:21.66 ]
yesodの中の人がcabalの代わりのcabalaって記事出してたけど、
あれエープリルフールなんか?



81 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 18:52:29.02 ]
cabal は実際に改善点が少なくないわけで、
エープリルフールならもっと分かりやすいネタにして欲しいもんだ

82 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 19:15:16.28 ]
yesodくらいは、もうはじめからHaskellプラットフォームに入れておいてほしい

83 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 20:55:29.57 ]
>>82
なんで?

84 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 21:07:15.70 ]
>>83
スタンドアロン環境で使いたいから

85 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 21:11:00.55 ]
yesodにcabalaでゆだやんってよく分かるんだけど、宗教色が強いのは
ちょと苦手かも。CLISPも同じなんだがな。

86 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 21:30:33.12 ]
>>84
なんだよ、それなら Haskell Platform に hmatrix 入れろよとか、
yamapa 入れろよとか、wx や gtk2hs 入れろよとか、iteratee 入れろよとか

そういう単なる「〜だったらいいなぁ」というチラ裏と変わらんじゃん

いや、べつにそういうのがダメとは言わないけど、
もう少し Haskell 全体を考えたり、
もう少し本質的なことから論理的に導き出した要望かと思って期待してた

87 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 21:32:41.92 ]
そう言えば、久々に yampa がバージョンアップしたな

88 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 05:31:58.67 ]
>>87
ホントだ。
でもAnimasの改良取り入れただけかな?
コメントは書いてんのに、ドキュメントのスカスカっぷりは相変わらずゆがみねぇな…。

89 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 12:45:15.77 ]
>>86
「Haskell 全体を考えたいなぁ」もチラ裏と変わらない

90 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/02(月) 18:36:33.86 ]
プログラミングHaskell とかゆー本買って来たぜ
今夜から枕の下に敷いて勉強する
これで漏れも立派なハスケラーだ



91 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 01:13:37.94 ]
「プログラミングHaskell」って教科書としては優れてるとおもうけれど、
自習書としてはどうなんだろう。
新しい構文とかがけっこう説明なしにでてくるよね。
まあ文法は別の本で見ればいいのか。

あと8章が……



92 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 06:28:43.11 ]
>>91
パーサーは難しいけど、モナドと同じで動かしてみないと、どういう働きか実感できない所があるな
ふつケルでも結局Wiki作る時に書かされるから、この本だけの特別ではない
(初心者置いてきぼりにしないように頑張ってる分だけプログラミングHaskellの方が親切ではある)


93 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 18:52:31.15 ]
HaskellWikiを流し読みしてると色々面白そうなプロジェクトを見つけるのだけれど、
ほとんど開発が止まっているように見えるのは何故だろう

94 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 18:58:32.29 ]
他の言語と違って研究の類いも含まれてるからね。
大学の研究ならほとんどが死んでいるプロジェクトで当然。
卒業したら放置なものが多いから。
これには悪い面もあるが、常に新しい風が吹き込む理由にもなってる。
そういうことも理解して使いこなしたほうがよい。
HaskellWikiも単なる道具に過ぎないのだから。


95 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 08:26:36.31 ]
そのまま枯れたものとして扱っていいものもあると思うよ。
常に更新されている方がいいとも限らないのでね。
依存関係でおかしくなってるものを放置されてると困るけどね。

96 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/05(木) 22:47:55.68 ]
みんなHaskellに飽きたんだよ

97 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 23:06:06.65 ]
ghc7.2から[リスト内包表記]をモナドにも使えるようになったんだね
有用な使い道を教えてくれ

98 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 07:53:10.20 ]
対角版リストモナドなんかも内包表記で書ける、とか

99 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 08:50:43.42 ]
論理プログラミングDSLを自作モナドで簡単にかくためのもの

100 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 15:11:00.50 ]
cabal の executable-profiling オプションって何に使うの?



101 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 15:50:48.11 ]
cabal で何かパッケージをインストールすると gcc.exe が起動するけど、
インストール処理が終わった後も gcc.exe のプロセスが消えない

これって、正常じゃないよね

102 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 16:32:35.76 ]
>>101
どうも、インストール処理の途中で強制終了させた場合に、
ghc.exe のプロセスは消えるけど gcc.exe のプロセスが残るみたいだ

理由はよく分かんないけど、まぁいいや
スレ汚してすまん、気にしないことにして自己解決した

103 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/08(日) 22:45:37.91 ]
gtk パッケージにある Graphics.UI.Gtk.Abstract.Widget.onExpose とかの関数って、
Deprecated のカテゴリに分類されてるんだけど、これって非推奨なんだよね

再描画要求のイベントが来た時に反応したいんだけど、
本当は何使えば良いの?

それとも非推奨じゃなくて、近い将来消える予定だけど、
とりあえず今のところはこれ使っとけって意味?

104 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/10(火) 13:50:38.88 ]
普通のhaskellにあるdata型フィールドの更新

data Anchor = A{aUrl,aLabel ::String}

href :: Anchor
href = A "hoge.com/" "hoge page"

main = do
print href
print (href {aLabel = "that"})

このコードだけだとAnchor型がprintの引数になるShowクラスのインスタンスではないから、
表示されないのはいいとして、
再代入(実際は再定義)「href{ aLabel = "that"}」
この上のコードでhrefのaLabelフィールドが"that"に変わって、aUrlはそのままになるらしいんだけど
普通にコンパイルエラー、これは可能なの?


105 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 14:22:21.53 ]
href { aLabel = "that" }の型はAnchorだ
aLabelを更新してaLabelの値が返ってくるわけじゃない
Cの構造体とかはこうだけど

レコード更新構文は、既存の値から一部を変更しただけの新しい値を作りたいとき、
A { aUrl = aUrl href, aLabel = "that" }
と書かなきゃいけないところを
更新する必要のあるフィールドだけ書けばいいだけにする、というただの構文糖衣。

106 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/10(火) 14:44:21.12 ]
>>105
printが可能かではありません、誤解を招いてすいません(原文のままコードを記述したため)

href { aLabel = "that"}は実質、A { aUrl = aUrl href, aLabel = "that" }で
これはhrefを再定義する構文ではなくて、hrefとは別のAnchor型で,hrefのaLabelフィールドだけ変えた値を作っているということですね
hrefの再定義だと思っていたので、
href {aLabel = "that"}を単文でdoの中に入れたときにエラーでん?と思ったのですが納得しました

107 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:13:46.76 ]
なんかコメントあしばらく出てないけど、haskellの皆さんどうしたの?

108 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 21:31:53.54 ]
Windows7 で ghc や ghci を起動させようとすると、
初めの1回だけ、よく 0xc0000142 のエラーが出るよね

あれ何なの?

どちらももう一回トライすれば普通に起動するから、
そのまま使い続けてるけど、なんかマズイかな

109 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 23:26:35.58 ]
wx パッケージが 0.90 にバージョンアップして、
とうとう wxWidgets 2.9 only になった


110 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:01:19.30 ]
>>107
特に質問することが無いんだもん・・・
初心者でも簡単に書けるようになるのは良いけど、スレが盛り上がらないのも確かだな・・・




111 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:10:39.33 ]
>>108
出たこと無い・・・32ビットの頃では何も問題なかったし、今の64ビットでもghci上で(横に)長めの入力すると挙動が怪しくなるくらいかな
それでもrubyのirbよりは安定してるが・・・(すぐ激重になって使い物にならん)


112 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 17:12:23.96 ]
wx が ghc 7.4.1 環境にまともにインストールできるようなったのは喜ばしいし、
styledTextCtrl などのコントロールもちゃんと使えるようになったのはいいんだが、
ghc のリンク処理と、出力された実行ファイルの起動に時間がかかるようになった

特にリンクは時間かかりすぎ
コンパイル自体は普通に速いのに、リンクでフリーズしたかと思った
これは、wxWighets の方のビルド設定で改善できるんだろうか

あと、相変わらず ghci 上では実行できない

まぁ些細な問題だ
あとは wxPack が 2.9 にバージョンアップすれば初心者にも勧められる

113 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 23:40:32.24 ]
>>112
今 GLCanvas の対応とかどうなってるのか色々試してるけど、
前言撤回、些細な問題ではなかった

このリンクの遅さは異常だ、イライラする

メインウィンドウをひとつ表示するだけのプログラムでも、
オプション無しで ghc を実行して exe ファイルへのリンクするのに 50 秒以上、
その exe ファイルを実行してからウィンドウが表示されるまで 5 秒以上かかる

wxWidgets のビルドオプションをモノリシックと非モノリシックで両方試したけど、
どちらもリンクや起動の時間に対して目に見える影響はなかった

これ、俺だけ?
なにか改善する方法は無いんだろうか

とくに無ければ、少なくともバージョンアップするまでは gtk2hs を使うしかないな

[環境]
Windows7
ghc 7.4.1
wx-0.90

114 名前:デフォルトの名無しさん [2012/04/15(日) 08:47:17.26 ]
副作用論争は、読んでいて面白かったが。今論争はないのか?。

不毛かもしれない宗教論争とはいえ、純粋志向のハスケラをおちょくっているのを見るのは楽しい。

この論争はハスケルには処理系を含めてあらゆるレベルで副作用がない、
という無理な主張から始まったと思う。

言語自体には副作用がない、でも、処理系には副作用があるようにみえる。
でも、それは勘違いだ。ハスケル処理系にもまったく副作用がないのだ。
副作用が発生しているのはハスケル処理系でなく、ハスケル処理系が
生成したDanoMoi処理系だ。

という主張がありましたね。

115 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 09:33:43.50 ]
釣れますか?

116 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 09:34:37.44 ]
頭悪そうw

117 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 10:14:32.40 ]
ごめんなさい

隔離スレ  toro.2ch.net/test/read.cgi/tech/1333801607/
で暴れてた馬鹿がこっちに逃げて来たみたいです
FizzBuzzすら書けない口だけ野郎なんで無視してもらって結構です

118 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:13:37.90 ]
>>114
www.kmonos.net/wlog/65.html
> 15:49 06/09/08 DanoMoi と Haskell
>決して「実際にそういう実装/理論になっている」という話ではなく、
>「こういう風に考えとけばわかる気がする」みたいな話なのでよろしくお願いします。
> ・Haskell プログラムには、一切いかなる意味でも副作用は存在しない
> ・Haskell プログラムは、"DanoMoi" というプログラミング言語のプログラムを生成する。
>"DanoMoi" という名前および概念は今私が勝手に考えたので適当ですよ。

プログラムと処理系は同じ意味だと思っているのですか?

119 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 13:41:43.29 ]
スパコンの世界じゃ、OSとハードウェアは同じ意味だしな…

120 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 13:43:34.33 ]
>スパコンの世界じゃ、OSとハードウェアは同じ意味だしな…
ないない。



121 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 14:04:53.77 ]
>>120
新しく世界一のスパコンを作った = ハードウェアとそれ専用のOSを作った(むしろハードウェアはそのままでOSだけを改良した)

122 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 14:15:40.44 ]
SISCマシンの設計図はハードウェアの設計図だろうか? ソフトウェアの設計図だろうか?

123 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 15:59:38.46 ]
>>119
アホ丸出しで恥ずかしくないの?

124 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 16:04:00.61 ]
>>123
大学でスパコンの講義受けるとOSとハードは同じだと教わるよ

125 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 16:13:02.27 ]
システムソフトウェアとハードウェアを一緒に開発しているだけの話で「同じ」ではない。

126 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 16:24:20.62 ]
>>125
スパコンは、ファイル管理システムとハードウェアとは不可分
逆に言うと、OSだけを取り出せと言われたら、LSIをペンチでいくつか取り出すことになる

DOS/V機やUNIXを使っていると分かりずらいが、UNIXで言うと、常駐ソフトとカーネルの一部がハードウェアそのものになってる

127 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 17:03:17.98 ]
何というデマ…

128 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 17:08:26.97 ]
通常ならOSで実現されている機能の一部がハードウェア上で実装されているとしても、
それを「OSとハードウェアは同じ意味」とか言っちゃうのは痛い。
さらにスパコンと呼ばれるものがすべからくそういう構成をとってると思い込んでるのも痛い。

129 名前: ◆0uxK91AxII mailto:sage [2012/04/15(日) 18:19:56.27 ]
>>126
誰が教えたの?

130 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 18:33:14.08 ]
> UNIXで言うと、常駐ソフト

デーモンという言葉すら知らない幼稚園児レベルのド素人は、まずは幼稚園に行けば?



131 名前:デフォルトの名無しさん [2012/04/15(日) 18:36:50.24 ]
だえもんさんなめてんの?

132 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 18:38:20.84 ]
>>126
ノードやバスのファームウェアも含めてアップデートするんで、ソフトウェアだけで配布されてますが?
使ったことないんじゃないの?

133 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 18:43:44.98 ]
スレチなやつは全員立ち去れ

134 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 19:25:43.97 ]
>>126, >>128
内容云々より、分かりずらいだのすべからくだの
日本語が気になってしょうがない

135 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 20:38:41.03 ]
ああ、日曜日だ・・・

136 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 07:13:57.36 ]
月曜日です。
関数型言語使いには無職が多いと聞きます。
皆が働いている時間に勉強や議論ができます。良かったですね!
今日も有意義に過ごしましょう!

137 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 07:23:29.97 ]
働いてるから、という不勉強の言い訳は、頭のおかしい企業以外では通らないよw

138 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 07:23:33.83 ]
みんな賢いからyoung retireして、余生を関数型言語のプログラミングで楽しんでるんだよ。知らなかった?

139 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 07:53:15.45 ]
>>136
今日も一日ドカタ仕事頑張ってね!

140 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 07:54:30.89 ]
匿名掲示板で職業なんてどうでもいいので少しはHaskellの話でもしませんか



141 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 09:22:55.36 ]
Haskellの話なんざHaskell Cafeだの#Haskell等で好きなだけしてろ

142 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 10:07:06.63 ]
ボクの分からないむずかしい話しちゃだめー

143 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 21:46:45.82 ]
>>128
実は正確にいうとスパコンに限らず、そこら辺のAT互換機もハードウェアとOSは同一
(スパコンはハードウェアとOSをセットで開発しないと、ハードウェアを作ったとは言わない)
特にHaskellを扱うようなソフトウェア科学から言えば同一と言わなければならない
理由はハードウェアを抽象化したモノがOSだから

ゲート回路だけでOS全部を構築しててもC言語でOS全部を書いていても、プログラムからは一切区別できない
区別できないってことは同じということ

144 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 22:36:02.49 ]
意味わかんない。日本語でおk、レベル。

たとえばforkシステムコールをどうやって論理回路で実装するのか、論文が一本でもあったら示してくれ。

145 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 22:42:55.75 ]
>>144
相手にしちゃダメ

146 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 22:46:57.64 ]
>>144
論理回路でチューリングマシンを実装すればいいじゃん

147 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 22:52:33.55 ]
forkってメモリコピーするだけじゃん

148 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 23:00:17.85 ]
>>144 >>146
USBメモリと同等のモノはFFとNANDゲートだけで構成できる
USBメモリの中にOSを入れることができる
つまり論理回路しかなくてもOSは構成できる

149 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 23:06:10.28 ]
紙と鉛筆でも構成できそうだな

150 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 23:12:15.14 ]
>>148
OS → Haskellの言語処理系

USBメモリと同等のモノはFFとNANDゲートだけで構成できる
USBメモリの中にHaskllの言語処理系を入れることができる
つまり論理回路しかなくてもHaskllは構成できる

>>150 相手しちゃダメっ



151 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 23:13:33.35 ]
なんやその矢印は
シミュレーション関係とかΣ代数ホモモルフィズムとかちゃんと意味かけやぼけー

152 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 23:18:00.73 ]
ニヤニヤ☆
その程度の頭で数学やってるんだw

153 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 23:27:59.61 ]
>>149
設計に従って手で鉛筆と紙を動かせば問題ない

>>150
Haskellを経由しないシステムコールを禁止すれば、HaskellプログラムかHaskellより高水準のプログラミング言語から見ればそのHaskell処理系がOSでありハードウェアということになる
つまりHaskellマシン

154 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 23:28:52.93 ]
>>148 アホか。どんなソフトウェアだろうがメモリに存在できるんだからハードウェアになっちまうだろうが。
スーパーコンピュータに限らず、あらゆるコンピュータのあらゆるソフトウェアが。

スーパコンピュータのOSが特別、というのがお前の主張だったよな。

> DOS/V機やUNIXを使っていると分かりずらいが
とお前は言っている。それをちゃんと説明しろ。できなければ回線切って吊るか消えろ。

155 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 23:33:31.56 ]
おれはスレチ全員が回線切って吊るか消えてほしい

156 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 22:13:15.53 ]
>>154
DOS/V機やUNIXはOSのうちソフトウェアの可換性の高い部分が多く、ユーザがさわって移植している部分こそがOSだと勘違いしているから、DOS/V機やUNIXを使っていると「OSがハードウェアと同一だと」分かりずらい

新しいスパコンを開発するときには、OSに他のハードとの可換性がないため、OSとハードウェアは完全に同一
「新しいスパコンを開発した」とは「新しいOSを開発した」と同意語で、この認識は世間一般でも認められている
筐体の中のLSIに一切変更を加えなくても、OSの改良で「新しいスパコンを開発した」とニュースになる

ソフトウェアは抽象度によってハードウェアから独立するので、あらゆるコンピュータのあらゆるソフトウェアをハードウェアとは呼ぶのは正しくない
プログラムの電子データのビット列とそれを格納してる機構はハードウェアだが、プログラムのセマンティクスはハードウェアではない
ただひとつ例外があって、OSというプログラムはそのセマンティクスがハードウェア

157 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 22:26:59.45 ]
>>156
スパコンのOSはLinixやAIX(IBMのUNIX),IRIX(SGIのUNIX)等、UNIX系OSである。
Linix、AIX、UNIXはソフトウエアである。
したがって、スパコンのOSはソフトウェアである。

この問題についての詳しい議論は、こちらのスレ↓が適している。
toro.2ch.net/test/read.cgi/tech/1331930031/

158 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 22:39:40.50 ]
>>157
スペルミス。LinixはLinuxの誤記。ちなみに京にはLinuxが移植された。

159 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 22:42:45.46 ]
>>157
スパコンのOSはLinixやAIX(IBMのUNIX),IRIX(SGIのUNIX)等、UNIX系OSである。
スパコンのOSはハードウェアである。
したがって、スパコン以外のUNIX系OSもハードウェアである。

160 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 22:47:24.63 ]
>>158
京はノードに少し改良したLinuxを入れてて、京そのもののOSは移植じゃなくて改良



161 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 22:55:14.12 ]
>>159
> スパコンのOSはLinixやAIX(IBMのUNIX),IRIX(SGIのUNIX)等、UNIX系OSである。
↓この間に飛躍がある。
>スパコンのOSはハードウェアである。←根拠を省いた断定。

162 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 23:08:22.98 ]
>>161
別の言い方をしましょう
「例えば、HaskellでプログラミングしてるときのOSって何?」
「Haskellでプログラミングしてるとハイパーキューブとかのハードウェア構造が消えるけど、ハードウェアは何に吸収されたの?」

163 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 23:14:00.03 ]
>>119が元凶か。IDないと面倒だね

164 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 23:15:54.30 ]
>>162
それこそ初心者スレへどうぞだよ(OS,UNIX板あたりも含めて)。
もう少しコンピュータのいろはを勉強するか、あるいは無知の知に気がついた方がよい。
ヒント
・言語処理系から見たOSはライブラリの下でsystem callとして呼び出され機能している。
・OSは(というか通信ミドル)はトポロジーを特に隠さない。
 むしろトポロジーを意識して並列分散したほうが性能がでる。
 Haskellがトポロジーを露わに扱う術を持っていないだけである。

165 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 00:45:36.21 ]
ヒント、とか言って得意げに語りだす奴w

166 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 00:50:20.71 ]
何の根拠もないのに
「スパコンのOSはハードウェアである。」
とかトンデモな断言をするより遙かにましだろ。

「UNIX系OSもハードウェアである。」
に至っては、初心者スレではなく、もはや病院行けとしか言いようがない。
恥ずかしすぎるので人前では決して言わないように。

167 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 01:33:45.40 ]
っ鏡

168 名前: ◆QZaw55cn4c mailto:sage [2012/04/19(木) 02:29:21.51 ]
ふつうのhaskellを読んでいます。
ghc 7.2.1 以降は
import System
とすると、

could nod find module 'System'
It is a member o the hidden package 'haskell98-2.0.0.0'
use -v to see a list of the files searched for.

とでてコンパイルできません
ghc 7.0.4 ではコンパイルできます。
7.2.1 以降でコンパイルできるようにするにはどうしたらいいでしょうか?
環境はWindows7 です。
ideone.com/ToAyj

169 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 02:46:32.16 ]
import System.Environment
にすればおk

170 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 20:50:07.23 ]
>>164
System call がハードウェアとの接触点ということでしょう
ということは、rawSystem から向こうは全部ハードウェアです

仮に、Haskellプログラムがプログラム上の言明でトポロジーにアクセスできてどのノードのどのLSIのどのメモリのどのビットを1にするか指定していたら、そのプログラムはOSです



171 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 21:04:49.64 ]
>>166
・コンピュータ科学では、「どのコンピュータの」OSもハードウェアと「原理的に」同一
・一般のコンピュータ科学を知らない人たちは、スパコン業界のハードウェアとOSを同一視している

分からなければ、次の話を考えればいい

今パソコンの中に10cmくらいの512MBのメモリが入っている
この世から、プログラムを高水準のモノから次々の削除していく
一度削除したら、そのプログラムと同じことができるモノは永遠にこの世に出てこない

これを続けていくと、OSが削除されたときに512MBのメモリはハードウェアではなくなり、ただの石になる

もっと言うと、川べりに落ちてるただの石も、その石を動かすシステムがあって、Haskellプログラムからそのシステムにアクセスできて計算に利用できれば、そのシステムはOSであり、そのOSと石はハードウェアになる

172 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 21:22:33.36 ]
喩えの方が余計わかりにくい

173 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 21:59:04.77 ]
独自用語とたとえで持論を語り出す電波さん。
持ちネタはそんなにないから、しばらくすれば満足して黙る

174 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 22:06:58.32 ]
もっとわかりやすく言うと、例えば論文読んでてプログラムからハードウェアへの入力x(t)があったとき、これそのままOSへの入力
例外はOSの論文読んでるときだけ

175 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 00:43:47.39 ]
>>171
この世にこれほど頭の悪い人を見たことがない。

176 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 02:42:48.57 ]
>>171
すれ違い迷惑です。退場してください

177 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 13:03:38.27 ]
Haskellの話しようぜ。そういえば来月 Learn You Haskell ... の日本語訳出るんだよね。

178 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 16:23:19.18 ]
せっかくだから
www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell
どうよ?

179 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 22:14:24.35 ]
parallel と concurrent がごっちゃになってる気がしないでもない

180 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 07:57:37.73 ]
ふむ
ttp://www.haskell.org/ghc/docs/latest/html/users_guide/lang-parallel.html



181 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 08:05:10.57 ]
並列と並行の定義は微妙に意見分かれるよね

182 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 11:52:22.81 ]
>>178は最初から最後までparallelの話じゃね?

183 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 11:55:45.93 ]
data parallelだから当然だな。

184 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 23:23:42.89 ]
Yampa でのゲーム作りは論文を参考にしてだいたい分りました
(論文のインベーダーを改造したり、ブロック崩しを作ったりしました)

一方、同じく FRP ライブラリの Reactive の方では、
どのようにゲームを作るのか

具体的には、個々のキャラを毎フレーム独立に動かしながら、
かつ互いに(衝突などで)関連を持つようにするには、
どのようなフレームワークを考えれば良いのか
生成や消滅はどのように考えるのか

参考になりそうな文献や記事は無いでしょうか

自分では、イベントとシンクの考え方がユニークで面白いので、
これをゲームオブジェクト間の関連に使えないかと考えているのですが、
他の人はどのように考えているのか、参考にしたいです

185 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 01:23:27.55 ]
Reactiveはもうメンテされてなくて、今のGHCじゃコンパイルできないから俺はノータッチだけど、
Yampaは、Reactiveなんかの古典FRPを写像変換子のアローとして再構築したライブラリだから、基本的なところの考え方に違いはないはず。

というか、生成、消滅、衝突とかをどう考えたらいいかわからないってのは、FRPの基本的な考えを理解してないからじゃないか?

時間に応じて離散的に変化する値を[(Time, a)]という無限リストだと捉えるのがイベント
時間に応じて連続的に変化する値をTime -> aという型の連続関数だと捉えるのがビヘイビア

こいつらに対して、
定刻tを過ぎたらイベントを発する atTime :: Time -> Event a
ビヘイビアを積分する integral :: Behavior a -> Behavior a
イベントが発生したタイミングで、ビヘイビアの値を補足した新しいイベント作る snapshot :: Behavior a -> Event b -> Event (a, b)

みたいなコンビネータを使ってごにょごにょするのがFRP。

例えば、キャラの移動速度の変化をビヘイビアとして定義して、integralで積分すれば、それが各時刻におけるキャラの位置のビヘイビアになる。
衝突、生成、消滅、キャラのステータス状態の変化、キー入力なんかは、イベントとして考えられるし、
毎フレームの更新自体もイベントとして考えられて、各キャラの更新は

map (flip snapshot updateEvent) charactor

みたいに書けば、それが各フレームのキャラの状態変化を表すイベントになる。
こんな感じで、イベントとビヘイビアを組み合わせて、より複雑なイベントやビヘイビアを作ってく。

とりあえず、Haskell wikiからたどれるリンクを片っ端から読みあさるのが良いと思う。
www.haskell.org/haskellwiki/Functional_Reactive_Programming
www.haskell.org/haskellwiki/Reactive

本だとSOEが有名。
・The Haskell School of Expression: Learning Functional Programming Through Multimedia
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0521644089/

186 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 02:00:46.52 ]
ちなみに、Yampaはイベントも矩形波みたいな時刻tの関数だと捉えて、
全てTime -> aという連続関数として考えるのが基本的なアイディア。
イベントやビヘイビアの合成は、

SF a b = (Time -> a) -> (Time -> b)

という写像変換として定義して、その枠組みにアローを使ったと。

古典FRPの概要と欠点とか、AFRPが何を改善したのかとかは
www.haskell.org/haskellwiki/Yampa
から辿れる、ITU-FRP2010 のスライドで説明されてるから見とくと良いと思う。

187 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 04:37:14.33 ]
Haskell的な処理の仕方がどうにも見につかない
実際に使われてるコード読みまくるか

188 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 19:19:28.33 ]
>>185
Yampa でゲームを作る場合、
pSwitch 系の関数を中心にイベント周りを組み立てるのが一般的ですよね
(論文 The Yampa Arcade や、これを引用してる他の論文などでも基本的にそうなってます)

まず、現在発生しているゲームオブジェクトを全てまとめたコレクションを作っておく

その上で、たとえば pSwitch 関数や dpSwitch 関数を使うのでしたら、
各ゲームオブジェクトや外部入力を起源とするイベント(衝突やビーム発射)を
発生させる関数を第1引数に渡す

コレクションの初期値を第2引数に渡す

第1引数の関数で発生したイベントを、コレクション内のゲームオブジェクトを
生成したり消滅させるイベントに変換する関数を第3引数に渡す

第3引数の関数で発生したイベントを解釈して
実際にコレクションを修正する関数を第4引数に渡す

細かいことはとりあえず抜きにして、大まかにはこんな感じだと思います
こうやって作った pSwith 関数や dpSwitch 関数の戻り値であるシグナル関数に、
ゲームを回すのに必要なシグナルを毎フレーム送るようにする

非常に分りやすく、イベントの伝達がスッキリして、
Yampa はかなり良い基盤を提供してくれると思っているのですが、
こういった基盤は Reactive の方ではどのようになっているのか聞きたいです

Reactive では Yampa みたいなイベント周りの仕組みを一ヶ所に集中させるのとは
また違った方法をとっているのでしょうか


189 名前:184 mailto:sage [2012/04/25(水) 19:22:23.08 ]
>>188
すいません、>>185 が Reactive についてはノータッチなのは分ってますが、
とりあえずどこかへアンカーを付けないと、後から話の流れが追いにくいと思いまして

190 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 11:55:44.48 ]
まだインクリメンタルGC実装されてないのかよ



191 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 12:00:24.86 ]
2000年以前に提案があったのにいまだに出来ないというのは実質無理ということなのだろうな
Non-stop Haskell(笑)

192 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 12:01:31.38 ]
Real Time Haskell

193 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 12:15:26.39 ]
メモ化による効率化の方法がわからない。。。
λカ娘(二期)を読んだらメモ化には Control.Monad.Memo (cabal install monad-memo)を使うといいよ的な
事が書いてあったのでHackageあたりの文書をチラ見してるけどフィボナッチ数列のメモ化だけの例じゃ
理解できない。。。

Hackageの文書みると「モナディックフォームに変換」とかさらりと書いてるので、もしかしてこれを使える
ようになるためにはモナドがちゃんとわかってないといけないんでしょうかね。

Control.Monad.Memoが使える程度のモナド理解のためのオススメ文書などあったらどなたか教えて
頂けないでしょうか。

194 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 17:31:00.49 ]
データをグラフにするのにニュープロットとカイロ
どっちのバインディングライブラリが幸せになれるかな
ドザです

195 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 18:02:32.57 ]
>>193
fib n = fib (n-1) + fib (n-2)

のところを

fib n = let
 n1 = fib (n -1)
 n2 = fib (n - 2)
 in (n1 + n2)

と書いて、モナド形式に変換した〜と言ってる2番目の例と比較してみればわかるんじゃないかな。
do が let、<-が=、returnが(大体)inに対応していると思って。
(これは他のどのモナドでも同じ。do文はモナドによって特殊な振る舞いを組み込む事の出来るlet式。
MonadFixのインスタンスにしてDoRec言語拡張でrecキーワードを有効にしないと再帰束縛はできんけど。)

関数を呼び出す際に、1引数関数(k -> Memo k v)と、値kを取る、memoって関数を介して呼び出すと、kに対する計算結果をメモ化してくれる。
これは、適用演算子($) :: (k -> v) -> k -> vにメモ化機能付けたもの、と考えてもおkだと思う。

異なる関数で相互再帰したりする場合はそれぞれ違うメモモナドを使わないとダメっぽいので、モナド変換子を理解してないとちょっとむずいかも。

196 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 19:22:43.33 ]
>>190
いまどれぐらいストップザワールドするんだろう?

197 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 21:15:42.26 ]
>>177
これ、Amazonに登録されてました

198 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 21:28:53.03 ]
評判の良い本だから楽しみだな
欲を言えば連休中に読みたかった

199 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 22:33:02.95 ]
>>197
そういう時はURLもお願いします。
ところで同時チェック商品が「情報処理2012年05月号別刷」です。
Haskellユーザは情報科学に興味がある人が多いのですね。

すごいHaskellたのしく学ぼう! (2012/5/23発売)
www.amazon.co.jp/dp/4274068854

情報処理2012年05月号別刷
「《特集》CGMの現在と未来: 初音ミク,ニコニコ動画,ピアプロの切り拓いた世界」
www.amazon.co.jp/dp/4915256839

え?初音ミクとニコニコ動画特集?
プレミアム会員の私が言うのも何ですが、
Haskellとはユーザ層が被らないとばかり思ってました。

200 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 23:02:51.55 ]
これがステマというやつか



201 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 23:13:54.70 ]
まったく。なにがURLもお願いしますだよw

202 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 23:19:57.80 ]
>>200
ステルスに失礼だろ

203 名前:199 mailto:sage [2012/04/27(金) 23:44:34.50 ]
URLも日本語版のタイトルも書いてないから探すのに無駄に手間取りました。
>>199をステマと思った人は自分の判断力がその程度だと自覚してください。

204 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 00:26:50.05 ]
Learn You Haskellでググったら一発、
ていうかこのスレにいるような層で原著知らないやついるんだなあ
自分のアンテナが低レベルだと自覚してください

205 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 01:15:00.48 ]
前スレ736に日本語版タイトルが出ているのを思い出せなかった>>199はアンテナが低レベル。
日本語版を探している人が原著を知らないと判断した>>204は判断力が低レベル。

ということで、以後何もなかったかのようにどうぞ。

206 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 01:15:22.02 ]
>>203
>>203
>>203

207 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 01:54:56.47 ]
>>205
いやだからさ、「Learn You Haskell 翻訳」 とかでググったら
日本語版のタイトル出てくるよってことなんだが…
そこまで言わんと分からんかね

208 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 02:09:15.28 ]
原著知ってれば尼で適当に検索すれば表紙ですぐ分かる

209 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 02:15:34.87 ]
ttp://learnyouahaskell.com/chapters
ApplicativeとかMonoidの話もあるのか、買いだな

210 名前:デフォルトの名無しさん mailto:197 [2012/04/28(土) 06:33:10.05 ]
あー、なんかごめん



211 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 07:34:34.99 ]
いいってことよ

212 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 20:07:01.35 ]
GADT

これって、なんて発音するの?
カフェテラスで議論する時に困る

213 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 20:12:31.04 ]
じーえいでぃーてぃー 以外の発音は聞いたことがない

214 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 20:29:16.32 ]
そっか

HTML がハトマルだから、GADT も何かあるのかと思ってた

ありがと

215 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 21:12:57.68 ]
>HTML がハトマルだから
いやいや

216 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 21:41:36.82 ]
ハテマラだろwwwwwwwwwwww

217 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 23:08:53.77 ]
GenericなADTだからじーえーでぃーてぃーが自然な発音だろうけど、俺は最初ガッドって読んじゃってこの発音が離れない。

218 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 23:36:16.79 ]
ガドト派はいないの?

219 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 23:44:01.61 ]
俺もpwdコマンドがプリントワーキングディレクトリだけど
パウドゥって脳内で響くのが治まらない
プワディって呼ぼうかな

220 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 00:27:16.78 ]
言語拡張オプション名が GADTs だから GADT もいっしょにガッツって読んでる



221 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 02:34:16.91 ]
>>195
ありがとうございます。モナドをもう少し真面目に勉強してみます。

222 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 10:54:07.47 ]
>>217
> GenericなADTだからじーえーでぃーてぃーが自然な発音だろうけど、俺は最初ガッドって読んじゃってこの発音が離れない。

私もこれ

223 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 12:25:33.10 ]
リワハで勉強していくとモナドトランスフォーマ辺りで脳が軋む
この書籍、後半部分に誤植が多発してるね

224 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 12:40:02.36 ]
リワハwww

225 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 12:53:35.88 ]
>>223
モナド変換子はマジむずい。
あれは理屈を理解するよりも、コンパイルして怒られてを繰り返して体で覚えた方がはやいかもしれない。
まずはliftIOだけ使って、コードのどの部分がどんな型になってんのか把握できるようになるまでガンバレ。

226 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 14:07:50.00 ]
さぁ次はmonad-controlの攻略だ・・・

227 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 14:22:11.84 ]
それよりも Arrow のやさしい解説本を洋書でも良いから誰か書いてくれよ

ところで、Arrow の利用って FRP かパーサーくらいしかないの?

228 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 14:46:37.22 ]
Arrowよか最近はconduitやら何やらのComonad系のやり方の方が熱いと聞いた
しかしComonadはArrowよかさらに文献が少ないと言うw

229 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 15:41:09.55 ]
>>227
Arrowの導入は「関数プログラミングの楽しみ」に1章分だけど出てる
印象としては抽象度が高すぎてかえって使いづらい
始めからArrowとして設計されてたら、もっと使い勝手がよかったと思う

230 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 16:03:42.43 ]
>>229
うん、持ってる

> 抽象度が高すぎて
まさにこれ、やさしいとは言いがたい

ネット上の解説も、回路図で first とか right とか説明して、
最後にこれが大ボスと言わんばかりに loop をちょろっと解説して終わりなのが多い
しかも、どれも抽象的

なんかこう、実例みたいなのが無いんだよなぁ

ひとつ論文で、パーサーの例を挙げて、
こうすればスペースリークを防げるよねって解説があったけど、
あれがまだましな方だったな(論文の方が分りやすいってどうよと思うが)



231 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 16:57:45.72 ]
(>>=)って左結合なのにどうして左の方で束縛した値が右の方で使えるの?

     __
((((((((((束縛)  )  )  )参照)  )  )  )  )  )

スコープ的にどうなってんの?


右結合だったら自然に見える事は理解できるんだが
      _______________________
(  (  (束縛(  (  (  (  (  (参照(´・ω・`))))))))))

232 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 17:10:59.47 ]
>>231
モナド則でこうなってるから
(m >>= f) >>= g == m >>= (\x -> f x >>= g)

233 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 17:21:25.38 ]
>>231
(>>=)は左結合だけどdoは右結合だから問題ない
明示的に(>>=)とラムダを使う場合でも、
a >>= \x ->
b >>= \y ->
c
なら、
a >>= (\x ->
b >>= (\y ->
c))
のことだから、やはり問題ない(ラムダ式は可能な限り右まで続く)

>>232
モナド則は関係ない

234 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 18:17:44.38 ]
>>233
……infixl 1と宣言しておきながら、事実上は右結合なんですか?

右結合って短絡可能なんですよね?

Maybeモナドでは
左にNothingなら問答無用でNothing
ってなってるけど

処理が右結合で、途中Nothingに出逢ったら
Real World Haskellではそのまま最後までNothing伝播処理が続くって書いてあった

でも僕の考える限りでは、右結合では右側が判明するまでの必要最低限の努力をするのが遅延評価だから
途中でNothingに出逢った瞬間からスタック巻き戻しのようになると思うのですが……


/\
 /\
  /\
  N /\
    /\
      :
      /\
       /\
/\
 /\
   N
/\
  N

Nothing

235 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 19:24:55.15 ]
>>234
構文の話と意味の話をごっちゃにしてないか
左結合(infixl)というのは、あくまで
a >>= b >>= c
というふうに使ったときに
(a >>= b) >>= c
と解釈される、というだけの意味。それ以外の使い方をした場合には関係ない

後半はその通りで、(Nothing>>=f)はfを呼ばないから、たとえばdoの中でNothing
が出て来たらそれ以降は評価すらしない
そのNothingが別のdo(呼び出し元の関数とか)に渡ったときには
Nothingの伝播処理が挟まる

236 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 21:27:11.79 ]
>>235
質問@
 Maybe 上で (>>=) あるいは (>>) を使ってたくさんの計算を連鎖するとき、
その計算のどれかが Nothing を返したら、残りの計算は一切評価されません。
 しかしこの連鎖は完全には短絡されていないことに注目しましょう。
連鎖中のそれぞれの (>>=) や (>>) は左の Nothing にマッチすると右に Nothing を生成し、
最後までそうしていきます。この点は忘れやすいものです。
連鎖中の計算が失敗したとき、それに続くNothing 値の生成、連鎖、消費は実行時に安価ではありますが、タダというわけではありません。


348 P にこう書いてありますが、私にはこの文脈が左結合を示唆しているかのように見受けられます。つまりは、
  /\
 /\
/\
N
 /\
/\
N

/\
N

Nothing
こう主張しているように思えるのです。短絡は起きていないように思えます。

ここで私のいう短絡とは、関数処理のスキップのみならず木構造の一発切除をも意味します
Nothingに出逢った瞬間全てを忘れて即Nothingです

これは無理なのでしょうか?

237 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 21:31:47.75 ]
>>235
質問A
余談ですが考えてもみれば、左結合は(関数処理は省けても)そのまま最後まで構造が進むしか無いようで、
一方で右結合は構造も短絡できるかのように見えますが、
構造の最後の方でNothingが発生するか、結局最後まで発生しなかった場合を想像すると、
スタック巻き戻しを考慮に入れると、行って戻ることになり、
最後まで構造をなぞるどころかその2倍弱の手間になるかも知れませんね。

より最初の方でNothingが出る期待が高い時は右結合
そうでない時は安定的な左結合が適切なんでしょうか?

Data.List.and と or は右結合で定義されていますが
これは何を意識してのことでしょうか?

and/orの最後の方でFalse/Trueがでるか、あるいは最後まで出ない時、
(これは直感ですが)リストの半分を越えてから結論出せる状況になったら、
正格左結合よりも酷いパフォーマンスになるのではないでしょうか?

スタックを巻き戻すだけというのが、パターンマッチングで値を返す処理に比べて、
凄く速いのならそんな事は無いといえるのでしょうが。

238 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 22:32:05.06 ]
木構造だとか関数処理とか怪しい概念は窓から放り投げて定義の展開と代入、簡約で考えよう
その辺はRWHよかIntroduction to Functional Programming using Haskellの方が詳しいyp

andやorが右結合なのは無限リスト食わせるとわかる
foldlで定義したら食わせるリストの頭に零因子であるものがあってもスタック食いつぶす

Maybeに関しての短絡はNothing >> forever (Just 1)とかするとわかる
これが木構造とやらを切除しないとなるとサイズが無限である木がメモリ上に存在してスタックオーバーフロー起こす事になる

239 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 23:59:04.07 ]
初心者に信用されてないんだなあHaskell

240 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 03:31:17.36 ]
手持ちの情報だけで突っ走ってしまう人がいるのはHaskellに限った話ではない



241 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 09:20:17.79 ]
>>239
「信用」の意味がよく分らないです

Haskell は初心者から、本来あるべきどのような信用がないのでしょうか

242 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 09:55:23.07 ]
>>214
くっそこんなので笑わされるとは

243 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 10:03:34.53 ]
鳩丸

244 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 11:13:59.36 ]
暗黙の型変換の仕組みは Haskell では作れないのでしょうか(GHC の拡張機能なとで)

例えばリテラルからの暗黙の型変換は一部ありますよね
Num.fromInteger 関数とか IsString.fromString 関数を定義しておけば、
リテラル整数や文字列を適切な型にコンパイラが自動的に変換してくれる
(後者は GHC の拡張機能ですが)

これの延長で、例えば OpenGL を使っていて、
GLdouble 型を引数に取る関数を Double 型に適用しようとした時、
何か特別な定義をしておけば、realToFrac 関数を使わずとも、
コンパイラが自動的に変換してくれるとか

このような例だけでなく、一般的に fromIntegral 関数とか realToFrac 関数って、
けっこう目障りなんですよね

これらって、型推論出来るようにコードを書かなければならないという、
どちらかと言うと言語仕様よりの概念じゃないですか
そのわりに、realToFrac 関数だけでは、ぱっと見、何から何への変換か分らない

一方で、これらの関数が使われているコードは、
何を計算するのかという、もっと抽象度の高い概念をコード化しているわけで

抽象度の高いコードの中に、抽象度の低い「おまじない」の様なコードが
けっこう大きな石ころのように混ざっている状況が、なんとも違和感を覚える

どうにかならないものでしょうか

245 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 11:26:54.17 ]
>>241
うーん、言語の設計者より自分の方が頭いいかもしんない、と思われちゃってるところ。

246 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 11:45:17.37 ]
どうでもいいレスに反応して戦線を拡大したがるあたり
抽象度とか言いつつ全体が見えていない

247 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 11:57:23.83 ]
>>238
有難うございました(´;ω;)

248 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 14:53:15.43 ]
GHCiで入力に関して、重複する履歴は考慮しないようにするにはどうしますか?
上を押しても同じ履歴だった場合、動いてないように見えてストレスとなります

249 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 15:06:17.22 ]
>>248
残念ながら現状ではどうにもならない

なにかストレスを発散する方法を考えてくれ

250 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 15:30:36.77 ]
サンクスエニウェイ



251 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 18:34:46.96 ]
haskelineを直してパッチ送ればいいんじゃね

252 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 18:36:44.31 ]
むしろこのスレの初心者の扱いの酷さに引いた

253 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 18:38:36.11 ]
定番の頭の悪い攻撃ですな

254 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 23:24:32.16 ]
初心者質問スレはまだ不要?

255 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 23:33:00.05 ]
今まで初心者らしい素朴な質問を見たことがない

・どうやってボタン表示するんですか
・ループが出来ません
・変数変えれないんですけど

そんな質問しねーよ、って人ならもう初心者じゃない

具体的に「Haskellでやりたいこと」を見つけて取り組んでくれ
分かんないことがあったらピンポイントで質問してこい
あたしらが優しく相手してやる

256 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 00:09:38.80 ]
HappyのGLR機能が保守放棄されている(現行のghcで動かない。バグもあるらしい)のですが、
今生きているHaskellのGLRパーサはありませんか?

257 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 03:16:34.46 ]
>>255
お、お前……女だったのか……。

258 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 03:22:27.79 ]
Haskellでメタプログラミングしたいんですけど,
具体的には今あるコード資産に対してコード変換して,機能拡張したい,
そのための便利な仕組みない

259 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 04:32:54.50 ]
>>252
いんや?
自分が初心者の頃、親切に教えてもらったぞ?

プログラミングHaskellで最初に詰まって、散々悩んだreplicateのリスト内包表記版を作れって問題とか

初心者でも、replicateの再起版はすぐに思いついたんだが、この頃は本当に頭が固かったな・・・
(ヒントがlengthのリスト内包表記版の応用って書かれてても、全然思い浮かばんかった)

回答してもらって、ああ、なるほど、lengthのリスト内包表記版の応用だ。ってやっと納得できたっけ

そもそもHaskellはRubyとかと違って、組込み関数も自分で簡単に作れるってのが初心者の頃の自分には言語の理解の助けになった
普段自分の使ってる関数の動きを自分で同じ関数作って確認しながら覚えられるから、あんまり基本的過ぎる質問ってする必要が無かったし、
>>255同様、初心者らしい質問って、そもそもHaskell(または関数型言語)ってどんな言語?とか以外じゃ見ない(それも最初のスレだけだったような・・・)
当時の自分の質問が一番初心者らしい質問だったと思う


260 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 06:00:09.93 ]
[(x,y) | x <- [1..], y <- [1..], 3^x - 2^y == 1]

深さ優先探索なので,(1,1)の後は事実上フリーズします

これを深さも幅も均衡して広げて探索していくにはどうしますか?



261 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 06:38:12.34 ]
>>260
[(x,y) | x <- [1..], y <- [1..x], 3^x - 2^y == 1 ||  3^y - 2^x == 1]

262 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 08:47:38.24 ]
>>259
昔のことは知ってるよ。Part3くらいから居る
>>231を馬鹿にする流れを見て、正気か?と思っただけ

263 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 09:44:02.40 ]
馬鹿にしてるってどの辺が?

264 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 15:45:08.13 ]
>>261
面白いハックです
ありがとうございました

265 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 16:26:57.40 ]
無限モナドリストを受けて
条件を満たす最初の要素を束縛するにはどうしますか?

266 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 17:20:16.04 ]
モナドリストって何?
[a] ?
Monad m => m [a] ?
Monad m => [m a] ?

基本はData.List.find (:: (a -> Bool) -> [a] -> Maybe a)と同じで、型に合わせてliftMしたりすればいいと思うよ。
ただ無限リストなので、条件を満たす要素がなかったら計算が終わらない。
これはしょうがない。

267 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 21:56:17.29 ]
>>266
後者です

findでやってみようと思ったんですが
術語が Int -> IO Bool なんです

filterM みたいに findM があればいいと思いますが

filterMしてheadって不格好です
きっとスマートな解決法がある筈です

268 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 22:03:05.12 ]
ああそれからモナドの性質上
無限のモナドのリストを渡すとフリーズしますよね

最初、遅延評価なのになんで正格評価みたいになってんだと首を傾げたのですが
考えてもみれば、順序を保証するんだからfilterMに無限のモナドのリストを渡すと
そのリストの最後の評価が済むまで次の行けないですよね
困りました

269 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 22:20:28.35 ]
>=> 地味に便利ワロタ

270 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 22:54:51.28 ]
[IO a] じゃなくて IO [a] で [a] が無限リストなら
どうもならん、諦めろ



271 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 23:45:26.55 ]
[IO a]で無限です

272 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 00:06:04.51 ]
Data.Listでの実装は
find p = listToMaybe . filter p
だぞ。別に filterM して head も似たようなもんじゃないか?

[IO a]でもIO [a]でも無限リストで要素が無ければ止まらないのは
一緒だと思う。

273 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 00:27:44.81 ]
>>272
はい(´・ω・`)

274 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 00:29:59.11 ]
filterM して head ってのはこれ?
これは要素があっても[IO a]が無限リストなら停止しないよ

findM' :: Monad m => (c -> m Bool) -> [m c] -> m c
findM' f = head <=< filterM (join . liftM f)


一方、こっちは要素があれば止まる(無ければ止まらない)

findM :: Monad m => (a -> m Bool) -> [m a] -> m (Maybe a)
findM f [] = return Nothing
findM f (x:xs) = do
  v <- x
  t <- f v
  if t then return $ Just v else findM f xs


テストしてみれば分かる

ms :: [IO Int]
ms = map return [1..]

main = do
  --print =<< findM' (return . (> 10)) ms
  print =<< findM (return . (> 10)) ms

275 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 05:20:09.91 ]
ほんとですね
無限リストでfilterMは危険なのか。

276 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 06:33:35.38 ]
>>274
ありがとうございました

filterMに倣って
findM :: Monad m => (a -> m Bool) -> [a] -> m (Maybe a)
版を作って使ってみましたが、何だかソースが汚れた気がします

Maybeを取扱う為に一々letやcaseを挿入しないとならなくなったせいでしょうね

しょうがないでしょうが

ところで何故標準ライブラリに採択されてないのでしょうか

277 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 06:38:59.61 ]
>>276
無限リストに使うなら、停止するとき返り値は
必ずJust xなんだからfromJustで取り出せば?

278 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 06:46:35.74 ]
join . liftM :: (r -> r) -> r -> r

これ何の使い道あるんですか?

279 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 06:57:09.58 ]
>>277
そうでした。。。

コードが汚くなったのは別の改変のせいでした
勘違いして findM 導入のせいにしてました

280 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 07:10:28.79 ]
>>278
なんの意味もない
liftM使って……て書き込み見たんでliftMから書き始めたからそうなった
今は反省している



281 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 07:26:28.96 ]
Oh...

282 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 10:41:16.52 ]
join . liftM p は p :: a -> m Bool を m a -> m b にするのに必要だけど、(>>= p) でも同じ。

283 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 11:17:28.41 ]
せっかくの話の流れをぶった切って申し訳ないですが、質問します。

正格性フラグの付いたデータ型のことですが、

data X = X !Int
・・・
let x = X a

この場合、x の値が実際に必要になるかどうかに関わらず、
X a の a が評価されるという意味でしょうか。

もうひとつ、

data F = F !(Int -> Int)
・・・
let f = F g

この場合、g が評価されたというのは、どういう状態を指すのでしょうか。
と言うのも、関数ではない値なら弱頭部正規形になるまで評価され、
それがどういった形なのか頭の中にイメージ出来るのですが、
関数の評価という意味がいまひとつイメージ出来ません。

もしかして、g w = if v then 関数1 else 関数2 などと場合分けされていた場合に、
f = F g の時点でこの v まで評価されて関数1か関数2かが決定されるということであり、
単に g w = 2+w などという関数であれば正格性フラグを付ける意味はない、
ということでしょうか。

284 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 01:11:25.25 ]
>>283
どちらの質問もその考え方であってる。


ただ、わかってるかもしれないけど、

>単に g w = 2+w などという関数であれば正格性フラグを付ける意味はない

束縛された値が正規形なのかとか、リテラルかどうかとか判断する術は一般にないから、
それらを基に正格性フラグ付けることに、意味がある、ないを判断することはできないし、意味もないよ。

重要なのは、値なりデータ構造なりがどこで構築されて、どこで正規化された値が必要になるのか?


285 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 01:24:42.23 ]
Haskellの道は長く険しい

286 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 05:16:54.30 ]
なら、やめれば?
言語は道具なんだから、習得に時間や労力が必要なら
その言語は道具として劣っているんだよ。

287 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 05:52:35.82 ]
つまり習得に時間がかかる日本語や英語は猿のうなり声より劣っていると

288 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 06:47:05.76 ]
>>283
> この場合、x の値が実際に必要になるかどうかに関わらず、
> X a の a が評価されるという意味でしょうか。
いや、xの値が必要になるまでは評価されない。

> もしかして、g w = if v then 関数1 else 関数2 などと場合分けされていた場合に、
> f = F g の時点でこの v まで評価されて関数1か関数2かが決定されるということであり、
同上。

> 単に g w = 2+w などという関数であれば正格性フラグを付ける意味はない、
> ということでしょうか。
これはそのとおり。

289 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 03:45:27.77 ]
forM [1..9] print
1
2
:
9
[(),(),(),(),(),(),(),(),()]

この最後のゴミを排除するには
>> return ()
をバインドするのが正統ですか?

290 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 03:47:18.16 ]
forM_



291 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 07:28:01.11 ]
あざっす^^

292 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 13:36:55.17 ]
>>286
C++を窓から放り投げるスレじゃないから

293 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 22:21:06.18 ]
もしかして、main の中で一行でも IO がつくコードを書いたら、それ以降は絶対に IO は取れないのでしょうか?

294 名前:283 mailto:sage [2012/05/05(土) 23:04:46.88 ]
お二人とも、ありがとうございます。

・・・結局、data X = X !Int の正規化フラグを付けるのと付けないのとで、
何が変わるのでしょうか?

data X = X !Int
・・・
let x = X a

>>284
> どちらの質問もその考え方であってる。

>>288
> いや、xの値が必要になるまでは評価されない。

どちらが正解なんですか。
それとも、お二方も同じ事を言っているのでしょうか。

a の評価のタイミングはいつなんでしょう?


>>284
> 束縛された値が正規形なのかとか、リテラルかどうかとか判断する術は一般にないから、
> それらを基に正格性フラグ付けることに、意味がある、ないを判断することはできないし、意味もないよ。

たしかに。
いや、ライブラリのソースを読んでいて、正規化フラグ付きの関数を持ったデータ型があって、
どういう意図・狙いでフラグを付けたのかなと思いました。

295 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 02:26:01.72 ]
>>293
main に限らず何かの関数の中で IO を使う関数を利用すれば、その関数の型の出力の部分には絶対に IO が付くという意味なら、 IO は取れない
例外は Debug

もしかして、なにか方法あるのかな?


296 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 06:18:40.65 ]
>>294
trace付けて確認すればいいやん。

import Debug.Trace

data X = X !Int
data Y = Y Int

main = do
 let x = X (trace "X" 1)
 let y = Y (trace "Y" 2)
 print 3
 print $ seq x 4
 print $ seq y 5

297 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 11:10:33.37 ]
UnicodeSyntax きもいわー
Scala でもこういうの流行ってるようだし

298 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 11:19:04.33 ]
さぁその気持ちでAgdaのコードを読もうか

299 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 12:16:00.88 ]
新人が全角スペースを埋め込んでも怒られない時代

300 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 12:17:22.58 ]
>>295
一応、標準ライブラリ内に System.IO.Unsafe.unsafePerformIO :: IO a -> a 関数がある

が、これは Simon Marlow と Simon Peyton-Jones の2人以外使ってはいけない



301 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 15:11:42.01 ]
unsafePerformIO ……それは禁断の果実

302 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 22:24:51.66 ]
尼のレビュー見てる限りだと、日本語で出てる入門書では
Graham Hutton著・山本和彦訳の「プログラミングHaskell」がいいっぽいけど、実際どうなの?

303 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 22:27:58.33 ]
実際そう
対抗馬になりそうなのが今月出る「すごいHaskellたのしく学ぼう」

304 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 22:32:20.78 ]
ゆっくり勉強する時間があるなら、いきなりRWHでいいと思う

305 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 00:22:24.17 ]
プログラミングHaskellは8章以降が魔窟

306 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 00:38:56.55 ]
魔窟ってほどではないけどあそこから難易度がすこーんと上がるのは確か
ゾウさん本にはその辺期待してる

307 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 00:52:04.11 ]
じっくりやるならAlgebra of ProgrammingとかPurely Functional Data Structureみたいな応用の効く(範囲が広すぎて実はあまり役に立たない)内容をですね

308 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 01:06:20.12 ]
ゾウ本だとHadoopと紛らわしいから愛称が欲しいな
寿司本?


309 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 01:12:32.86 ]
スゴイ級

310 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 01:19:18.62 ]
スシボンって書くとセシボンみたいで原題と繋がっていい感じだな
いやなんとなく



311 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 01:22:38.35 ]
難しいことを簡単に書くのは無理。

312 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 03:25:04.44 ]
すごハスは11章からが面白い

313 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 07:14:00.90 ]
すごハスって、基本的にネットで無料で読める原著と内容はほぼ同じ?
それとも、大幅に加筆されてる?

314 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 08:22:56.77 ]
Real World Haskell P.209に、

fnmatch :: (RegexLike Regex source1) => String -> source1 -> Bool

というのがあります。

ここの(RegexLike Regex source1)というクラス制約にある、A B a という形は
どのようなクラス宣言をすれば、このような形になるのでしょうか?

315 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 11:56:14.66 ]
ソース読んでみそ。
ttp://hackage.haskell.org/packages/archive/regex-base/latest/doc/html/src/Text-Regex-Base-RegexLike.html

多変数型クラスを宣言するにはMultiParamTypeClassesというLANGUAGEプラグマが必要。
ttp://www.kotha.net/ghcguide_ja/latest/type-class-extensions.html#idp24691328
また、多変数型クラスを含む型推論のために、多くの場合、関数従属または関連型が使われる。
ttp://www.kotha.net/ghcguide_ja/latest/type-class-extensions.html#functional-dependencies
ttp://www.kotha.net/ghcguide_ja/latest/type-families.html#assoc-decl

316 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 11:57:01.10 ]
ソース読んでみそ。
ttp://hackage.haskell.org/packages/archive/regex-base/latest/doc/html/src/Text-Regex-Base-RegexLike.html

多変数型クラスを宣言するにはMultiParamTypeClassesというLANGUAGEプラグマが必要。
ttp://www.kotha.net/ghcguide_ja/latest/type-class-extensions.html#idp24691328
また、多変数型クラスを含む型推論のために、多くの場合、関数従属または関連型が使われる。
ttp://www.kotha.net/ghcguide_ja/latest/type-class-extensions.html#functional-dependencies
ttp://www.kotha.net/ghcguide_ja/latest/type-families.html#assoc-decl

317 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 11:59:11.96 ]
しまった。ダブりすまん。
ついでに訂正しておくと、多変数型クラスより多引数型クラスのほうが訳語として一般的みたいだ。

318 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 12:45:02.58 ]
>>315
d

何故か、hackage.haskell.orgにつながらなくてソースは見られないのですが、
MultiParamTypeClassesというLANGUAGEプラグマをつければ、class宣言に複数の変数を
取ることができるんですね。

319 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 09:10:35.85 ]
fact 0 = 1
fact n = n * fact (n - 1)
ふと思ったのですが、もし(階乗を知らない人が)負数を突っ込んだら死にますよね。
階乗は例えがアレですけどこういうケースのように、パターンマッチで任意の条件分岐(n < 0とか)できますか?

320 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 09:16:44.54 ]
直接パターンマッチではできない
if-then-else式を使って、やりたいことはできる、と思う



321 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 09:17:54.53 ]
あーあと、正しくない結果の時のエラーはundefinedという関数を呼ぶと、
エラーが起きる値が返るから、それを使えばいい

322 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 09:36:25.12 ]
if-then-elseよかguardの方がよく見る

323 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 09:41:06.61 ]
ありがとうございます。ガードの方が意味的に良さそうですね。

fact :: Int -> Int
fact (n)
  | (n < 0)  = undefined
  | (n == 0) = 1
  | (n >= 1) = n * fact (n - 1)

324 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 10:17:08.88 ]
見やすさではそんな感じかな。こだわる人だとこう書くかも
fact n =
 case n `compare` 0 of
  LT -> undefined
  EQ -> 1
  GT -> n * fact (n - 1)

325 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 10:46:13.79 ]
なるほどcaseならパターンの網羅性もチェックできる訳ですね。

326 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 10:51:34.61 ]
自分の好みではこう。パターンマッチの上から順に、特殊ケース→一般とする。
fact n | n<0 = undefined
fact 0 = 1
fact n = n * fact (n-1)

327 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 10:51:35.52 ]
ドメインを広げ過ぎると、また停止性が保証できない問題は出てくるだろうけども。

328 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 11:11:11.43 ]
tp://www.amazon.co.jp/gp/product/images/4274068854/ref=dp_image_z_0?ie=UTF8&n=465392&s=books

どうしてこうなった…w

329 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 11:53:25.13 ]
マイナスかどうかのチェックは最初だけでいい、とか言い出すとどうかな

330 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 15:47:59.33 ]
factSafe = check (>= 0) fact

check p f n = if p n then f n else undefined

fact 0 = 1
fact n = n * fact (n-1)




331 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 16:13:00.23 ]
わざわざドメイン定義するならMaybeで返そう

332 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 16:36:37.12 ]
check p f n = if p n then return (f n) else Nothing

ドメインて何?

333 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 16:57:47.03 ]
factSafe = 1 : zipWith (*) [1..] factSafe
fact n = factSafe !! n

334 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 17:33:59.09 ]
>>332
定義域
例えば浮動小数点や有理数を渡した時に、
コンパイルエラーも含めて健全な定義になっているかということを言っていると思う。

335 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 17:39:05.80 ]
fact = (map snd (iterate (succ . fst &&& uncurry (*)) (1, 1)) !!)


336 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 17:59:32.33 ]
>>333>>335
初心者の私に解説してplz

337 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 20:24:45.91 ]
>>334
それscanlでできるよ!
fact = (!! n) $ scanl (*) 1 [1..]

あと(!!)使ったらSafeじゃないだろ…

338 名前:337 mailto:sage [2012/05/11(金) 20:25:54.90 ]
すまん
>>333 宛だった。

339 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 20:42:03.98 ]
負数入れたらエラーになるけど停止はするな

340 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 21:31:34.77 ]
意味論の上ではどちらも⊥という扱い



341 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 22:47:56.84 ]
それにしても335は酷いポイントフリー症候群だな…。

342 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 22:59:19.96 ]
ポイントフリーは酷くないが(1,1)がマジックナンバーになってるのが気になる

343 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 23:45:33.49 ]
初心者レベルの質問かもしれませんが、
Haskellの組み込み関数と同等の機能を
練習のために実装してみると、組み込み
のものより桁違いに遅い事があります。
組み込みの方の実装を見るためには
どうしたらいいでしょうか?

344 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 01:17:34.23 ]
hsファイルをそのままインタプリタで実行して遅いなら、hiファイルにした後で実行してみてはどうか


345 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 01:47:10.63 ]
>>343
Hackageのリファレンスからソース落とせる。

baseパッケージなら↓の一番下
hackage.haskell.org/package/base-4.5.0.0

大抵は各関数の横にsourceってリンクが付いててHTML化されたソースを見ることができる。(全てのコードが辿れるとは限らないけど)

ただまぁ、融合変換とか正格性評価とかアンボックス型とか、かなり上級な内容もてんこ盛り。
他の言語でもそうだけど、基本ライブラリほど難しいっていう…。

346 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 03:31:29.92 ]
>>345
有難うございます!
hackage.haskell.org/packages/archive/pkg-list.html
パッケーリスト(↑)には何に使うのか想像もつかないもの(Conduitとか)が
沢山有りますね。
取り敢えず、ヤル気が持続しそうなもの(Animationなど)を見てみます。

347 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 13:41:30.61 ]
だれか顔文字だけで動くソースを書いてくれ。

348 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 13:47:08.27 ]
brainf*ck、Lazy-K亜種にしかならない

349 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 19:38:57.18 ]
みんな >=> は使ってるかい?

350 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 19:40:08.85 ]
くコ:彡



351 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 22:43:14.15 ]
haskell入れようとしたが、重すぎて繋がらない…
ttp://www.haskell.org/


352 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 00:31:44.86 ]
>>351
今は全く問題なく開くが・・・

まぁ、HaskellPlatform-2011.4.0.0-setup.exe のダウンロードは
確かに遅いと思うけど、繋がらないことはないだろ

haskell.org はたまにクソ重いときあるから、
時間をおいて何度か試してみなよ

353 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 00:40:54.91 ]
遅ければtorrent使えばいい

354 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 00:50:09.29 ]
exeファイルを落とせない場合は、セキュリティソフトがexeファイルのダウンロードを邪魔してる可能性あり


355 名前:351 mailto:sage [2012/05/13(日) 01:03:27.63 ]
アドバイスありがとう
ダウンロードどうこうというか、サイトに全く繋がらない状態が続いてる
サイトが落ちてるわけじゃないようなので、時間をおいて再試行してみる

356 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 01:22:13.54 ]
今現在、遅くもなんともありません。

357 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 01:29:11.16 ]
>>355
たしかに繋がらない
www.haskell.org/
↑を開くと、↓になる

Temporary Redirect
The document has moved here.
Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny13 with Suhosin-Patch Server at www.haskell.org Port 80

で、hereをクリックすると↓に飛ぶ
こっちはちゃんと見れる
www.haskell.org/haskellwiki/Haskell

ブラウザのセキュリティでリダイレクトを許可するか、haskellwiki を直接開けばいいと思う


358 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 11:58:28.57 ]
hackage.haskell.org/platform/
ここに移動したんじゃねぇの?

359 名前:351 mailto:sage [2012/05/13(日) 20:13:03.61 ]
解決した。ありがとう
しばらくこれで遊ぶわ

360 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 04:49:47.87 ]
>>328
ec2.images-amazon.com/images/I/513ipzNg22L._SS500_.jpg
スシやらタワーについて許可は取ったのだろうか



361 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 07:56:41.29 ]
どう許可が必要なんだ?

362 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 13:27:18.60 ]
オスケル 酢に溶かしたハスケル


363 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 13:34:52.41 ]
あンた、背中がHaskeてllぜ

364 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 14:42:34.01 ]
>>360
原作者にはウケてたらしいぞ

365 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 19:04:09.46 ]
>>364
ほんと?そういう話でもないかと思ってぐぐったんだけど見つからなくて
原書と日本語版のタイトルについての話なら見つかった
groups.google.com/group/haskell-cafe/browse_thread/thread/29274a7b6a4fddd4/45fbde1d2d1d0322

366 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 19:06:45.10 ]
Haskell全然関係ないけど旬のスカイツリーより東京タワーのが昭和感溢れててよかった気がする…。


367 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 20:02:20.48 ]
でも昭和時代はHaskellはまだ生まれてない

368 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 00:44:00.62 ]
Haskellはギリギリ昭和じゃなかったっけ?


369 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 12:07:52.76 ]
Haskell Report Version 1,0 は1990年の4月1日に発行された。
(1.0未満のバージョンは少なくとも公には無かったと思う)

A History of Haskell
research.microsoft.com/en-us/um/people/simonpj/papers/history-of-haskell/

ちなみに、それに先立ち、委員会で言語の名前をあれこれ考えるんだが、
Haskell に決まった後、旦那さんの名前を使っていいかと奥さんに訪ねに行くんだ。
その心遣いが暖かくて、上記pdfのこのくだりは結構好きだ。

370 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 13:41:28.71 ]
Mirandaは誰なの?



371 名前:デフォルトの名無しさん [2012/05/20(日) 13:51:57.71 ]
スペインか何処かの著名な寿司職人じゃなかったっけ?

372 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 14:23:19.93 ]
天王星の衛星

373 名前:デフォルトの名無しさん mailto:sage [2012/05/20(日) 16:31:59.27 ]
コカコーラ社のスプライトに対抗して出されたペプシ社の商品

374 名前:デフォルトの名無しさん [2012/05/21(月) 08:24:16.49 ]
bsフジの番組で日本手ぬぐいだっけか作るのに
すかいつりーのデザイン使うのはダメとか言われたらしいよ

375 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 08:34:21.97 ]
デザインが商品の最も主要な一部だからでしょ。

376 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 09:08:20.97 ]
スーパードライホールみたいにとりあえず上にうんこでも載せとけばいいんじゃね?

377 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 09:21:15.13 ]
スカイツリーにはいいイメージ全然ないわ

378 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 07:21:03.78 ]
東京ハスカイケリー

379 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 07:22:12.91 ]
>>376
あのうんこビルすごいよな。でもトーキョー近辺に住んでる連中しか知らんのでは?
東京はすごいよな。
うんこビルに新宿の座薬ビル なんでもありだ

380 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 08:24:28.93 ]
何スレだよ



381 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 10:19:44.11 ]
では君達、議論に戻りたまえ

382 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 11:08:16.00 ]
ksks

383 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 13:11:48.56 ]
東京スカイツリー
東京使いすぎー

384 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 13:22:52.22 ]
だよなー
さいたまタワーの方がよかったよなー
土地まで用意したのによー

385 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 17:01:44.09 ]
最近Haskell勉強しようか、と自習中です。
Haskellでwindowsのcomを使う、具体的にはHaskellからExcelを
使いたいのですが、サンプル等はありませんか?

haskellscriptやhdirectは公式からもページが見れず、
com-1.2.3はインストールができてもあまりexcelを操作するような
サンプルが発見できませんでした。

386 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 21:19:18.78 ]
CSVをいじったり、VBAのコードを自動生成するくらいしかやったことない

387 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 22:42:49.91 ]
>>385
com パッケージの公式サンプル
haskell.forkio.com/com-examples
ここに WMI にアクセスするサンプルがある。
(完全なソースも zip になってる)

COM のインターフェースを取得する方法も、
そのメソッドを呼ぶ方法も、必要な情報はほぼ入ってないか?

COM の基礎が分っていれば簡単に Excel に応用できると思うんだが・・・

このサンプル見てピンとこないのなら、とりあえず Haskell は置いておいて、
VBスクリプトとかから COM にアクセスする方法を調べてみると良い。
COM に対するアクセスの要領はほとんど同じだと気づくはずだ。
(オートメーションを扱える言語なら何でも良いが VBS が一番イメージが近いと思う)

厳しいことを言うようで悪いが、Haskell に限らず、
自分がやりたいことをピンポイントで例示するサンプルなんてまず無いぞ。
サンプルを弄ったり、自分で極簡単なCOMを作ってアクセスしてみたりして、
少しずつ理解していくことを勧める(「勉強」をしているのならの話だが)。

388 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 06:58:19.48 ]
>>386 >>387
ありがとうございます。確かに、そのサンプル見てもよくわからず・・・
基本がなっていないみたいです。
まずはCOMの基本的な部分からゆっくり勉強していきます!

389 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 13:49:05.42 ]
      ☆ チン     マチクタビレタ〜
                        マチクタビレタ〜
       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        ヽ ___\(\・∀・) < Haskell Platform の stable release まだ〜?
            \_/⊂ ⊂_ )   \________
          / ̄ ̄ ̄ ̄ ̄ ̄ /|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       |  愛媛みかん  |/


390 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 22:08:37.74 ]
あの絵本とりあえず発売したのか?



391 名前:デフォルトの名無しさん [2012/05/23(水) 22:13:49.97 ]
え!絵本なん!?

392 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 22:18:58.27 ]
すごいH本、今日本屋行ったけど置いてなかったわ
これだから地方は

393 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 22:22:22.73 ]
iteratee に関するその周辺技術や考え方
メモ化に関するその周辺技術や考え方
FRP に関するその周辺技術や考え方
ジェネリックなデータ型や関数などの考え方
スペースリークに関するメカニズムや対策
Stream Fusion などを含む最適化の考え方や仕組み

というような辺りの話はなんで書籍にならないんだろ
どれでも、それ単体で本が書けてしまえるほど豊富な内容を含んでいるのに

394 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 23:21:06.12 ]
>>392
PDFでも販売してるよ
estore.ohmsha.co.jp/titles/978427406885P

395 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 07:46:46.57 ]
略しかたがすごいな
すごいH本。。。 巨乳や万筋だらけかと思うぞw

396 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 07:51:57.42 ]
プログラミングHaskell --> プロH
ふつうのHaskellプログラミング --> ふつうのH
Real World Haskell --> 実践H
入門Haskell --> 入門H

397 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 08:01:07.46 ]
むらむらしてきた
Little Schemerでも写経して心を鎮めるとしよう

398 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 08:50:42.90 ]
>>395
まあ、twitterのネタだからな

399 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 12:39:35.57 ]
無理して素人受け狙うのはみっともないと思う

400 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 13:15:48.66 ]
素人受けwww



401 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 15:04:50.83 ]
はじめてのC 並だよね。

402 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 21:00:22.24 ]
はじめてのC
みんなのPython
やさしいRuby
すごいHaskell ← new!




403 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 07:02:59.99 ]
なんの括りだ?

404 名前:デフォルトの名無しさん [2012/05/25(金) 07:53:50.13 ]
みんなのパイソンとか物騒だろ

405 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 07:56:30.09 ]
で、内容はどうなのよ?
プログラミングHaskellかどっち買うのが正解?

406 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 08:29:14.46 ]
だれか出せよ
Oh!Python って本を。Oh!Xがあったんだから。

407 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 08:29:58.56 ]
Oops!Pythonでおっぱい本のほうがいいか

408 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 08:35:30.56 ]
https://github.com/lazyatom/kintama

>>405
Learn Youの原著は編集前のがWebで読める
プログラミングHaskellは薄くて簡潔で練習問題付き
お好みに合わせてどうぞ

409 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 12:59:37.97 ]
Haskell Platform 2012.1.0.0 マダー

410 名前:デフォルトの名無しさん [2012/05/25(金) 13:37:19.64 ]
>>402
さつばつScala



411 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 14:14:28.87 ]
>>405
Learnは内容はいいけど、訳がどうかが問題。これだけは見てみないとわからない。
山本さんみたいに訳せてるかどうか

412 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 14:57:09.79 ]
Data.Vector.Primitiveはとても特殊な場合を除いて推奨されないとありますが
とても特殊な場合とはどんな場合なんでしょうか?

413 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 18:04:21.99 ]
配列ライブラリを書くときとか?

414 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 18:10:07.54 ]
将来、Vector の実装がPrimitiveのレベルで変更されるということだったら困る

415 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 18:26:23.52 ]
>>406
その筋の人だ!

416 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 18:53:57.14 ]
考えてみれば98糞食らえからwindows糞食らえで
 裏街道ばかり来てるな。

417 名前:デフォルトの名無しさん [2012/05/25(金) 19:32:56.19 ]
>>405
>>411
元々のお二人の訳も素晴らしいのですが、さらにかなりレビューされていて
とてもわかりやすくて良いと思います。
ただ、原文のブロークンな調子を踏襲して訳されているので、
そういうのが嫌いな方には不向きかも知れません。
内容的には、すごいH本の方が、関数型言語の初心者には
分かりやすいと思います。

418 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 19:41:28.34 ]
cabalを利用していて、依存性が原因でパッケージのインストールに失敗する場合、通常どのように対処すればいいのでしょうか?
大まかで良いので教えていただけるとありがたいです

419 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 19:50:41.63 ]
普通の人は諦めて、バージョンアップするまで待つ。

普通でない人は、*.cabal ファイルをテキストエディタで修正する。

私は普通でない人なんで、どんどん書き換える。
もちろん異常が無いかどうかはできるだけ検証するが。

420 名前:デフォルトの名無しさん [2012/05/25(金) 22:05:05.22 ]
すごいHaskell買おうかな……
フリー版+3000円の価値があるかが問題…



421 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 22:22:11.53 ]
>>420
もし主目的が、Haskell の関する他人の文章を楽しむことではなく、
あくまで Haskell を学ぶことであるまなら、
フリー版でよく分らない部分をここで訊いて、
それでも納得できなければ買う、というのはどうだろうか

422 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 23:00:34.35 ]
>>417
オーム社でやってるレビュー方式には参加したことがあるからだいたい雰囲気分かるわ。藁
訳は期待してるわ。by 411

423 名前:デフォルトの名無しさん mailto:sage [2012/05/25(金) 23:02:51.97 ]
>>420
英語の洋書に一度は手を出したい→原著サイトでしばらく格闘してみる。
オンラインで読むのは嫌目がしょぼしょぼするし、頭に入るきがしない。英語は好き→原著でどうぞ
英語は苦手。→強烈なH本をどうぞ。

424 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 18:43:17.15 ]
紙のよりpdf版が少しやすい
estore.ohmsha.co.jp/titles/978427406885P

425 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 22:19:42.13 ]
しかもカラーらしいな、pdf版

426 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 23:21:27.87 ]
加筆とかはないのか、結局。

427 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 23:46:47.63 ]
「すごいHaskellたのしく学ぼう!」は気配りと楽しさがすごい
ttp://d.hatena.ne.jp/keigoi/20120526/sugoih

428 名前:デフォルトの名無しさん [2012/05/27(日) 15:53:38.46 ]
Linuxで*.cabalってどこにあるんでしょう。
探せど探せど見つからなくて困ってます。

429 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 16:04:40.54 ]
>>428
意味が分らん。
cabal ファイルは Linux も Windows も関係ないだろ。

自分でパッケージを作りたいのなら cabal ファイルも自分で書くし、
Hackage から落としてきたパッケージなら展開したディレクトリ内に入ってる。

430 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 18:58:41.69 ]
>>428
ディストリのパッケージになってる奴の*.cabalファイルならソースパッケージを展開すると入ってると思います。



431 名前:418 mailto:sage [2012/05/27(日) 20:08:53.91 ]
>>419
ありがとうございます
しかしなかなか上手いこと通すのは難しいですね・・・

432 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 02:19:34.53 ]
.ghciを設定したら警告が出たんだが
*** WARNING: /home/hi/Haskell is writable by someone else, IGNORING!
*** WARNING: /home/hi/Haskell/.ghci is writable by someone else, IGNORING!

.ghci
:set prompt "ghci> "
設定も反映されないし、よくわからん。

433 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 02:57:35.46 ]
英語読めないのか?

434 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 07:48:02.06 ]
すごいHaskellのやつか。
ワーニングの英語には、これと似た内容が書いてある。
www.google.co.jp/search?hl=ja&q=.ssh+%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3
それでも分からなかったら、ワーニングの一部コピペしてググってみよう。

435 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 11:53:23.62 ]
ワーニングワーニングワーニングワーニング

436 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 20:58:20.92 ]
>>435
ボスキャラでも登場するのか

437 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 21:11:31.73 ]
ウォーニングって言いたいんだろ

438 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 21:18:48.90 ]
ワーニングのバッグスバニー

439 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 21:20:36.83 ]
>>435,436
へいおまち
www.youtube.com/watch?v=lySjinT6f0A#t=1m55s

440 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 21:22:04.36 ]
某書籍に「だったら、おまえはStar Warsをスターワーズと読むのか」とあって、
そりゃもっともだと思うと同時に、そういう話じゃねぇだろと思ったな。



441 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 21:33:48.96 ]
『宇宙戦艦ヤマト』が、「ワープ」を「ウォープ」に修正する最後の機会だったんじゃないか、
とか今では言われているが

442 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 21:42:05.41 ]
「ワープ」は1億人が意味を共有できる立派な日本語
修正の必要はない

443 名前:ぬるぽ mailto:sage [2012/05/28(月) 22:03:46.93 ]
バレーボールもボレーボールらしいな
nativeの発音聞いたことないけど


444 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 22:16:32.09 ]
「グッドマーニング云々」とか言ってたヘミ猫を思い出す。

445 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 22:28:44.29 ]
ラウターの調子が悪い

446 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 22:44:59.51 ]
むかし、猫でもわかるプログラミングで、
エディットコントロールをエジットコントロールと言っていて、
もの凄く違和感を覚えた記憶がある。

でもよく考えてみれば、エジソンと同じなんだよな。

447 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 22:46:22.72 ]
>>443
アメリカ人は普通にバーリボーだったけどなぁ。

448 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 23:34:37.10 ]
♪こわれかけのレディオ

449 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 23:38:13.93 ]
gtk2hs や wx などの GUI ライブラリのラッパーを作りたい。
下記のことがラッパーでは実現不可能なら一から作ることになる。

例えば、ボタンを押すとラベルの文字が変わる処理を記述したい場合、
素の gtk2hs や wx なら、ボタンのイベントハンドラに登録した関数内で、
ラベルのプロパティに対して set 関数を使って値を書き換える感じだと思う。

これはあまりに手続き的でムカムカしてくる。

こうではなく、ボタンのイベントに反応するプロパティ型を作り、
それをラベルのプロパティに最初に設定した後は変更(再設定)しない。
イベントが起きなくても、起きても、自動的に文字が設定される。

プログラマはイベント時に何が起きるかを時系列にそって設定するのではなく、
プロパティが何に対してどう反応し、どう変化するかを定義する。

これができれば、いくぶん宣言的で心地よい。

私みたいな者が考える事なんて既にいろんな人が考えていると思うんだが、
このような仕組みを作る上で、参考になりそうな資料はないだろうか。

450 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 23:48:03.50 ]
wxPython と decorator



451 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 08:41:21.13 ]
まさにそれがFRP


452 名前:432 mailto:sage [2012/05/29(火) 09:40:44.70 ]
chmod 700 .ghci
chmod 700 Haskell/
で解決した。
Haskell/もパーミッションいじらないといけなかった。
なんで設定ファイルがない時は普通に動くのに、
設定ファイルを置くと警告が出るのか意味がわからない。


453 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 09:44:25.92 ]
俺は「***** is writable by someone else, IGNORING!」という警告を読むことが
できない文盲です、って大声で自分で言いふらして嬉しいのか?

454 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 10:09:31.31 ]
>>453
初心者でごめんね。

455 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 10:15:28.14 ]
いや初心者とかじゃなくて、英語読めればその警告が何故出たのかわかるだろってことだろ

456 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 10:48:28.72 ]
日本語でお説教する事に何のメリットがあるか、わかるだろ

457 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 11:32:31.62 ]
なでしこで記述する事に何のメリットがあるか、わかるだろ

458 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 12:02:42.50 ]
英語の初心者ということだろう。

459 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 12:48:14.86 ]
というか Unix は一つのマシンを複数のユーザーが使うことが前提だから、
初期化スクリプトみたいなファイルを誰でも編集可能だと、たとえば自分の
ファイルを全部消す、みたいな悪意ある記述を追加されるかもしれない、

という前提を知らないと、英語が読めてもわからないかもしれない。

ていうか >>434 を華麗にスルーしちゃダメだろ。

460 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 12:52:44.84 ]
>>450
まだ調べ始めたばかりだけど、求めているモノとは何となく違う感じがする。
decorator の機能を使ってイベント処理している例をいくつか見てみたけど、
結局イベントハンドラの中で描画関数を呼んだり、計算したりしている。

つまり、>>449 の「素の gtk2hs や wx なら」の部分と
本質的に何も変わらないのではないだろうか。

もちろん、自分でももう少し詳しく調べてはみるが。

>>451
言葉が足りず申し訳ない。
これが FRP の一つの形態になっている事は分ってた。
(リアクティブシステムの構築を関数型っぽく記述する事)

Haskell で使えるFRPライブラリにも色々あって、
たとえば Yampa の仕組みや実装をいくら調べたところで
>>499 のような事の実現に直接役立つわけではない(実際色々調べた)。

>>499 に繋がるような何かキーワードはないだろうか。



461 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 15:16:16.96 ]
バグ?
Prelude> succ 1.000022342
2.0000223420000003


462 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 15:27:06.59 ]
xamlのデータ・バインディングとか?

463 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 15:36:37.09 ]
XAMLファミリは、Bindingに加えてViewModelのプロパティ間で
リアクティブプログラミングする仕組みを導入すると
正に>>449のような書き方になるね。

しかし、あれをHaskellでどうやったら再現できるのかはさっぱりわからん。

やってる事は、依存関係のあるキャッシュの管理と似てるので
キャッシュを持つサーバの仕組みなんかが参考になりそうだが・・・

464 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 16:02:10.76 ]
>>460
色々調べてたのなら既知かもしれんが
プロパティを設定するというのはwxパッケージの提供するインタフェースに似てるな
このプロパティは実質IO aとa -> IO ()のペアにすぎんのだけど、それなりに>>449で述べてるようなのに近いように思う
これとFRPの組み合わせはreactive-banana-wxパッケージでプロパティやイベントをEventやBehaviorとして
リアクティブシステム内で扱えるような補助関数を提供してる
参考になる記事としてはreactive-bananaの作者のblogとか


465 名前:449, 460 mailto:sage [2012/05/29(火) 19:46:57.92 ]
みんな、ありがとう。
知ってるものも、知らなかったものも、色々キーワードが出てきた。
それぞれの関連も含めて調べてみる。

本棚の肥やしになってる "Pro WPF in C# 2008" もやっと役立つ日が来たかも。

アドバイスを受けて、Heinrich Apfelmus のブログをちょっと見てみたけど、かなり面白い。
まとまった時間が取れる休日にでも本格的に読んでみるよ。
(Conal Elliott のブログより読みやすい英語だ)

wx のプロパティは gtk2hs のそれや OpenGL の StateVar と似たようなモノで、
やはり「値」を設定したり取得したりするものという以上のモノではないのでは。
その値はあくまでそのプロパティの意味する値そのもので、
例えば text プロパティなら String 型しか受け付けない。
そこに「ユーザーが何かした時にはある文字になる」という IO String の値を
設定することはできない。

一応繰り返しておくと、次のような考え方が wx や gtk2hs などのものと思う。

ボタンが押されたイベントでは何を処理するのか?
 ・初めにラベルの文字を変え
 ・次にテキストボックスの背景色を変え
 ・最後にボタンを不活性にする

このような手続き的なものを、次のように宣言的にしたい。

ラベルの text プロパティとは何か?
 ・ボタンプッシュイベントで文字を変えるものだ
テキストボックスの bgclolor プロパティとは何か?
 ・ボタンプッシュイベントで色を変えるものだ
ボタンの enable プロパティとは何か?
 ・ボタンプッシュイベントで False になるものだ

466 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 22:36:50.20 ]
>>465
w :: Frame
b :: Button
t :: TextBox
l :: Label
pushEvent :: Button -> Event ()
text :: Prop w String
bgcolor :: Prop w Color
enable :: Prop w Bool

w <- frame [text := const "hoge", show := const () <$> createEvent w]
t <- textbox [bgcolor := changeColor <$> pushEvent b]
l <- label w [text := changeString <$> pushEvent b]
b <- button w [enable := const False <$> pushEvent b]

こういうのが思い浮かんだ

wxのプロパティやイベントの型をEventなりBahaviorの形式にしただけだが
>>465の最後の記述のような捉え方は自然に出来る書き方にはなってると思う
今のreactive-bananaでDoRecが使えるなら
頑張ってwx-coreパッケージ直接叩いてこういうインターフェースの高水準ライブラリ書くのは可能な筈


467 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 22:42:05.22 ]
部品単位でイベントハンドラを書きたいってこと?

468 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 23:08:01.19 ]
*Main> [1,3..6]
[1,3,5]
*Main> ['1','3'..'6']
"135"
*Main> [1.0,3.0..6.0]
[1.0,3.0,5.0,7.0]

なんでFloatのリストでやったときだけこうなるの?

469 名前:449, 460 mailto:sage [2012/05/29(火) 23:21:17.86 ]
>>466
text :: Prop w String

これらは Prop ではなく Attr なのでは?

それはともかく、具体的なアイデアありがとう。
イメージとしてはかなり近いと思う。
参考にして考えてみる。

470 名前:449, 460 mailto:sage [2012/05/29(火) 23:22:12.75 ]
>>467
それも一部に含まれているが、ちょっと違う。
手続き型と宣言型の違いが明確に現れるようにイベントハンドラを例にしたが、
あるプロパティの値が依存する先(ソース)はイベントハンドラだけではなく、
別のウィジェットのプロパティという可能性もある。

例えば、何か絵をプレビューするウィジェットの enable プロパティが、
複数のチェックボックスのプロパティに依存していたり。

この場合、手続き型なら、両方のチェックボックスの check プロパティを調べ、
両方 True ならプレビューウィジェットの enable プロパティを True にする、
という処理を両方のチェックボックスのイベントハンドラに記述する。
(当然実際は、同じひとつのイベントハンドラを両方に設定するなど省力化するが)

これを、例えば次のように記述できたら宣言的で分りやすいと思う。
(擬似的に wx っぽく書くと)

p <- image w [ enable := checked c1 <&> checked c2 ]

本質的には、イベントの発生やプロパティの変化を「伝搬」させたい。
それができれば部品単位でイベントハンドラを書くこともできる、という事。



471 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 23:42:10.94 ]
手続き型ならobserverパターンでやるんじゃないかな。

きっと難しくなる要因は純粋言語だというところにありそう。

472 名前:449, 460 mailto:sage [2012/05/29(火) 23:52:06.14 ]
>>471
すまん例が悪かったか。

べつに手続きっぽく書くのが難しい訳ではない。
observerパターンの様に書くこともできる。

私が単に関数型言語で手続きっぽく書くのをキモイと感じるから、
なんとか宣言的に書けないかと、そっちの方で苦心してるだけだ。

私がもし純粋でない OCaml にはまっていても、
きっと同じように宣言的に書けないか考えていたと思う。

473 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 00:10:30.62 ]
>>446
editはエディットです

474 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 04:38:33.68 ]
Stateモナドで24時間経っても答え出ない処理をMutable Vectorに替えたら20分で答え出したワロタwww

475 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 05:55:52.99 ]
(24 * 60) / 20 = 72
72倍の高速化ならよく聞く話。

476 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 05:57:49.10 ]
さっそくGTAでDPの練習 #Haskell - Qiita
qiita.com/items/a372458d171e373285b1
これとか当社比400倍とか

477 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 07:00:18.28 ]
(/ 20 (* 24 60))

478 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 13:39:02.03 ]
(/ (* 24 60) 20)でしょ

479 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 14:15:16.61 ]
くそう、みんな雲の上に居るようだ
DPが動的計画法のことだと知るまで5分も費やしてしまった
GTAに至ってはグランドセフトオート (ry

480 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 14:28:51.43 ]
すごいHaskell
たのしく学ぼう! ||
     人 _  |-|
     旦/○\日
     目 ァイリ |-|
  / ̄ ̄ ̄ ̄ ̄\  
  □-□ U      |
  | .|ι        |
旦ノノ||  ̄ ̄ ||



AAなんてあったのね



481 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 15:27:23.39 ]
>>480
さっき本屋で見てきたんだけど、B5大型本を想像していたので文庫本+αのサイズが意外だった。電車の中でも読めるね。
中身も読みやすく編集されているようで、これからHaskellやって見ようという人にはお勧めだと思う。

ステマでした

482 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 16:13:11.04 ]
これなら手続き脳の私でもらくらく最後まで読んでしまえそう!
でも...お高いんでしょう?

483 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 16:19:47.25 ]
Amazonで出店者が定価3、4割り増しにしてるけど、情弱は買うんだろうかあれ。

484 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 17:21:21.37 ]
少し高くしている奴は海外へ送ってもらえるってことでしょ?

あと今すごいH本第一章読み終わったけど
結構誤植があった。

485 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 17:51:41.91 ]
やっぱりか

486 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 18:14:21.05 ]
重力は存在しない といってる学者がいるみたいだな

やめとけよ
そこの場所のリファクタリング始めたら「引力」だって存在しねーし
熱エネルギーも存在しねーから

その部分は俺が研究してきた事と酷似する
俺はアルゴリズムの中から、変数を抹消し、
ソースコードは再帰で圧縮
そして残ったものは、何もなかった

1が残ると思ってたが、予想を超えて、「それ」は0になった

重力がいらないとかいっちゃうと、0に近づくんだよ
わかるか

いらなくないんだよ

元々、何もないところに「重力」ってものを「わざわざ」冗長させて定義したんだよ

何もわかってねーな科学者
リファクタリングし続けた後に、宇宙に存在する最後の1とは、時空のねじれによって出来る固体のみで
その時空のねじれを解けば1であった存在は0になり、文字通りなにもなくなる 世界の終わり

487 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 18:16:30.43 ]
コテが抜けてるよ

488 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 18:35:37.43 ]
躁病患った友人が似たような事言ってた

489 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 19:26:23.54 ]
ニュートラリーノがダークマターの正体なのか?

490 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:12:32.98 ]
beautiful codeであったな。
コードがなくなる話。



491 名前:449, 460 mailto:sage [2012/05/30(水) 20:38:17.19 ]
>>468
Float と Double の Enum インスタンスにおいて
enumFromThenTo 関数は次のように定義されている。

enumFromThenTo = numericEnumFromThenTo

numericEnumFromThenTo n n' m = takeWhile p (numericEnumFromThen n n')
  where
    p | n' >= n = (<= m + (n'-n)/2)   -- <-- 注目
      | otherwise = (>= m + (n'-n)/2)

numericEnumFromThen n m = iterate (+(m-n)) n

例えば [1.0,3.0..6.0] とやったら、6.0 以下の間は差分ずつ増やすのではなく、
「6.0 + 差分の半分」以下の間は差分ずつ増やす計算になってる。

つまり、7.0 以下の間は差分ずつ増やすので、最後は 6.0 ではなく 7.0 で終わる。

こういう仕様になっている理由は、本当のところは正直よく分らない。
一応理由として思いつくのは、浮動小数点による誤差の蓄積の問題を回避するため
ではないかという事。

492 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 20:57:45.88 ]
>>490
最後は唯の数式になるって話でしたよね
バグ0で何よりも高速に動作し使用メモリも0

493 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 21:28:17.18 ]
欧州ではコンピューターにプログラミングさせるのが今研究されてるとか
そんな話題があったな。

494 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 01:03:20.68 ]
(==) 1 1
1 == 1
上と下が同じなのは面白いなぁ。


495 名前:337 mailto:sage [2012/05/31(木) 02:37:13.13 ]
(1 ==) 1
(== 1) 1

全部同じ (^^)

496 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 07:43:22.77 ]
すごいH、全部読んだ。
誤植が多少あったけど、日本語訳に違和感はなかった。

PerlとJavaScriptで自サイトを作ってる趣味プログラマーだけど、プログラミングの幅を広げようと
思い、プログラミングHaskell -> Real World Haskellの半分までを読んでから、すごいHを読んだ。

後半は全くの初心者には、やっぱりちょっと難しいかなと思った。
これから、Real World Haskellの残り半分を読みます。

497 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 08:34:14.43 ]
違和感ないけど、
直訳のままじゃねーの?って所が所々あったよ。

498 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 09:23:22.24 ]
蛇足な上に正しいとは言い難い訳注が多くて萎えた

499 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 11:03:03.47 ]
誤訳誤植は具体的に書いてくれるとたすかるにゃん

500 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 11:11:02.75 ]
...とか言って具体的に自分も書かないとアレなので一つ見つけたやつ:


p.385 誤:VirePatterns  正:ViewPatterns



501 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:12:22.41 ]
p19の下側
両方を含むリストは作れません。

ここはタプルだろ?

502 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:13:09.98 ]
p20
最下段
ジッパーみたいに一つのリストにします。

ここはタプルだろ?

503 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:15:22.87 ]
p22
bが斜辺より長いような不要なトリプルを調べないような

ここはaだろ?

504 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:21:40.86 ]
ここに書いてもフィードバックされる保証はないけどな

505 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:26:11.65 ]
>>501
"…ペアとトリプル両方を含むリストは作れません。このため、
ベクトルを表すにはタプルを使ったほうがはるかに有利です。"

何もおかしいことは言ってないと思うよ。

p.19上の方では図形を表すのに頂点のリストとして図形を表す試みとして
[[Int]] なんかを考えようとしてる。つまりベクトルをリストとして与えようとしてる。
この方式について検討するとベクトルの表現に使われてるリストは長さ
固定ではないので2次元と3次元のベクトル(頂点データ)が混在したリストが
出来てしまうという難点があることが指摘されている。

一方、頂点の表現としてリストの代わりにタプルを使うならば標準のリストは
homogeneousでなければならないという縛りのおかげで2次元と3次元の
頂点データが混在したリストは作れない事になり、コンパイラがはねてくれる。
[(Int,Int)] か [(Int,Int,Int)]のどっちかになるはずだからな。

そんなわけで
"…ペアとトリプル両方を含むリストは作れません。このため、
ベクトルを表すにはタプルを使ったほうがはるかに有利です。"
という事になる。

506 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:30:42.06 ]
>>502
タプルのリストにしてくれるという意味で「一つのリストにしてくれます」と言ってると思うんだけど。

んーあれだな、本気でわからないのか些細な説明省略を鬼首で騒いでるのかわからん。
前者なら真面目に相手するけど後者ならあんま相手にしたくないなぁ。

後者ならSICPの日本語訳がクソすぎる和田は日本語がわかってない
とか該当スレで騒いでるほうが賛同者多くて楽しいと思うよ。

507 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:36:10.34 ]
> 後者ならSICPの日本語訳がクソすぎる和田は日本語がわかってない
> とか該当スレで騒いでるほうが賛同者多くて楽しいと思うよ。
YA・ME・TE
SICPスレが機能停止しっぱなしでげんなりしてるんだから

508 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:46:06.63 ]
諸君、ホットなライブラリは何かね?

509 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 12:55:15.84 ]
> 正しいとは言い難い訳注
むしろこっちの詳細はよ

510 名前:502 mailto:sage [2012/05/31(木) 12:59:07.14 ]
>>506
p21の
zipの使用例で作成されているのはタプルだから
一つのタプルにしますという意味のほうが
日本語として自然なのではないですか?

:t zip
zip :: [a] -> [b] -> [(a, b)]
と:tで見ると2つのリストを受け取って、返り値がタプルになってます。

表現方法で、
(a, b)はタプルで
[(a, b)]もタプルですよね。





511 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:01:16.68 ]
>>510
いやいや、(a, b)はタプルで[(a, b)]は 「タプルのリスト」だよ

512 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:02:58.60 ]
そもそもタプルとリストをひとつにして使っていますが、
>>タプルのリスト

p18のタプルの説明で
タプルにはリストと似ている点がいくつかありますが、
リストとタプルには根本的な違いがありますと。

別のものとして説明しているのに
なぜタプルのリストという言葉が出てくるのですか?


513 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:05:27.09 ]
p19の
先ほどのベクトル角括弧を丸括弧に変えて、
[(1,2),(8,11),(4,5)]
のようにすれば、タプルになります。
と書いてあります。


514 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:07:02.52 ]
本の訳が正しいのか、
>>511さんが正しいのか。
さてどっちだ?

515 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:13:15.41 ]
>>505
p19
この方法の問題点は、[[1,2],[8,11,5],[4,5]]のようなリストが作れて、
これを2次元ベクトルのリストが〜
を受けての

>>501
p19の下側
両方を含むリストは作れません。

と作れると書いてしまっては矛盾します。

GHCiで
Prelude> [[1,2],[8,11,5],[4,5]]
[[1,2],[8,11,5],[4,5]]

Prelude> [(1,2),(8,11,5),(4,5)]

<interactive>:137:8:
Couldn't match expected type `(t0, t1)'
with actual type `(t2, t3, t4)'
In the expression: (8, 11, 5)
In the expression: [(1, 2), (8, 11, 5), (4, 5)]
In an equation for `it': it = [(1, 2), (8, 11, 5), (4, 5)]
ghci>

リストだと通るが、
タプルだと作れません。


516 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:14:45.79 ]
ここのサイトは
書き込み毎にtwitter上に流れるような仕組みになっているよ。


517 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:15:48.47 ]
>>513
「ベクトルの角カッコを丸括弧に変えて」
 : つまりベクトルを表すときにリストを使うのではなくタプルを使うように変更して、という事です。

つまり「座標(ベクトル)のリスト」 のデータ型を [ [Int] ] から [ (Int, Int) ] に変更したわけです。

各種の言語で配列的なものを「ベクトル」と呼ぶ事がありますがこの箇所ではそのような
言葉使いはしていません。「ベクトル」は幾何的な座標を指した言葉です。

[Int] は 「整数のリスト」 ですね。
[ [Int] ] は 「「整数のリスト」のリスト」 です。

(Int, Int) は「サイズ2の整数タプル」 ですね。
そして [ (Int, Int) ] は 「「サイズ2の整数タプル」のリスト」 です。

518 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:16:09.52 ]
Functional 2ch (functional2ch) は Twitter を利用しています
https://twitter.com/#!/functional2ch



519 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:18:37.00 ]
原書19ページから引用
> We can change our vectors to tuples by surrounding them with parentheses
> instead of square brackets, like this: [(1,2),(8,11),(4,5)].

日本版の正確な引用文がないとなんとも言えないけど
訳すときに複数形がどっかに行ってしまったということじゃないか

520 名前:518 mailto:sage [2012/05/31(木) 13:20:13.73 ]
Hideyuki Tanaka ? @tanakh
PFIで働く社員。妹わんこ系Haskeller。今すぐフォローすべき競技プログラミング界のスーパーエンジニア。
ttp://tanakh.jp/ d.hatena.ne.jp/tanakh

Functional 2ch (functional2ch) は Twitter を利用しています
ttps://twitter.com/#!/functional2ch
のフォロワーにいるから、まず間違い無く見ているね。




521 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:23:38.99 ]
>>517さんが言いたいことは、
本の方は省略して書いていて、
タプルのリストと書くほうが正しいということかな?

本ではただのタプルだけど。

522 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:29:04.34 ]
[...] の中の各ベクタについて言ってるんだよ

523 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:34:06.19 ]
ある数以上フォローしてたら、TwitterのTLを全部チェックするなんて無理だから

524 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 13:40:39.78 ]
>>521
そういうことになりますかね。

紙の本の原文で見ると

We can change our vectors to tuples by surrounding them with parentheses
instead of square brackets, like this: [(1,2), (8,11),(4,5)].

となっているので

(拙訳)ベクトルの角括弧を丸括弧に変更してタプルに変えられます: [(1,2), (8,11),(4,5)].

ってな調子なので原文でも「ベクトル...」で始めた文脈のスコープがベクトルに維持されている
事を前提とした説明ですね。

525 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 15:26:18.20 ]
なんでこのレベルの奴がこの板にいんだよ年々レベル下がってるじゃねーか死ね

526 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 15:53:45.08 ]
ユーザーが増えると必然的にそうなる

527 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 15:59:29.72 ]
あちこちのスレで同じこと書いてる荒しだぞ

相手にするな

528 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 16:16:11.40 ]
Haskellの板ってここ以外あったっけ?w

529 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 16:27:13.25 ]
>>525
>>なんでこのレベルの奴がこの板にいんだよ年々レベル下がってるじゃねーか死ね
感情丸出しで書き込んでいて、自分が一番食物連鎖の最下層にいるって気付かないのかな?

530 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 17:30:12.27 ]
>>528
Haskell以外の言語や他ジャンルのスレに無差別に投稿してるみたい。



531 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 17:54:01.83 ]
>>525
だったらHaskell初心者質問スレ立てろって日頃言ってるだろ
立てないなら黙って初心者の斜め上の発言の諫め役に甘んじてろや

532 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 18:57:17.51 ]
>>501,502はHaskell関係なしに読解力の問題だから
初心者スレなんていらんよ

533 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 19:00:45.29 ]
>>530
相手をしてくれるところに来るんだよな

534 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 19:07:41.09 ]
>>532
>>501,502が読解力の問題というのなら、
お前は本を買っていない貧乏人だろ。
本文を読めばおかしいと分かる。

535 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 19:22:06.41 ]
おかしくないよって丁寧に説明してくれてる人が既に現れてるだろ

ていうか・・・
自分の読解力は問題ない、きっと相手が本を買っていないに違いないって
すごい考え方をする人がいるんだな

536 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 19:25:42.58 ]
しかも貧乏人ときた
何かにつけて相手を貶さないと死んでしまう病気でも持ってるのだろうか

537 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 19:38:40.60 ]
>>513みたいにごく断片的に引用するとおかしいように見えるけど
それより前の文章を含めて読むと別におかしくないとわかるよ
>>524が文脈のスコープって言ってるのはそういうこと



538 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 19:59:54.59 ]
福沢諭吉が「天は人の上に人を作らず、人の下に人を作らず」
と言ったのを、スコープ無視して

だから結果を平等にしろと言い出す頓珍漢が定期的に生まれるらしい

539 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 20:02:11.38 ]
勝手な文脈をくっつけて我田引水する頓珍漢も定期的に見るけどなw

540 名前:デフォルトの名無しさん mailto:sage [2012/05/31(木) 20:02:57.16 ]
またスコープがおそろし飛んだな



541 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 10:01:04.38 ]
>>538
日教組の悪口はそこまで。

542 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 10:22:22.35 ]
ν速に帰れ

543 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 10:50:20.80 ]
>>507
あんなパラノイアがここにもいると思うとゾッとするからな。

544 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:51:34.23 ]
>>537
該当箇所を引用してくれない?

545 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:55:46.34 ]
なんか盛り上がってると思ったら、なんだ読解力の問題じゃん

546 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 18:04:30.79 ]
原文よりも読解力が必要になるのは悪役だわな。

547 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 19:21:51.64 ]
Haskell の処理系が遅延評価を実現するための技術や歴史を
基礎的なことから学びたいのですが、どこから手を付けるのが良いでしょうか。
メモリ関係、特にガベージコレクタとの関係を主軸にして学びたいです。

"遅延評価" や "Haskell" "実装方法" "メモリ"
などの辺りのキーワードを色々組み合わせてググってみましたが、
学べそうなページは見つかりませんでした。
(他言語で遅延評価をエミュレートする方法は沢山ありました)

マイナーで1万超えるよな値が付いている洋書でも構いませんが、
なにか参考になりそうな資料はないでしょうか。

548 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 20:11:52.60 ]
>>546
普通に読んで分かること。読解力なんて言い出すまでも無いレベルだよ

549 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 20:32:40.66 ]
歴史的、基礎的というのがどこまで指すのかよくわからないけど、思いついたまま。

遅延評価が名前呼び出しほどはコスト高じゃないと世の中に知れたのが、LandinのSECDマシンを使ったLispKit Lispでの実装。
en.wikipedia.org/wiki/SECD_machine
en.wikipedia.org/wiki/Lispkit_Lisp
この辺はAlgolの名前呼び出しのための実装技術thunkが源泉の一つ。

グラフ簡約を使ったsimonpjの
"The Implementation of Functional Programming Languages"

遅延評価は扱ってないけど実装モデルの解説として素晴らしい。
www.cs.unm.edu/~williams/cs491/three-imp.pdf
(Schemeの実装モデル3つを解説しています。通称3imp)

抽象度の高いサブセットの実装として。haskell.orgにもいくつかある。
https://github.com/johang88/haskellinjavascript/blob/master/rapport/kapitel/abstract.tex

GCは手に入りやすい専門の本が二つあるのでそれを読めばいいと思う。実装上独立性が高いので、GCだけを独立して書いたものが多い。絡めて学ぶのはおすすめではない。

550 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 20:50:49.50 ]
>>546
原文を読むのに必要な読解力と変わらない程度に訳されてると思うのですが。



551 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 21:02:13.19 ]
本人乙!

552 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 00:06:58.73 ]
>>547
ガベージコレクションならこれ
徹底解剖「G1GC」 アルゴリズム編 - 達人出版会
ttp://tatsu-zine.com/books/g1gc



553 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 00:08:28.86 ]
本人は俺だ!

554 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 00:15:49.03 ]
諸君、議論したまえ

555 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 00:40:22.16 ]
>>500,501,502,503
このうちどれが間違いで、どれが勘違い?

556 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 08:36:20.41 ]
まぁ正直わざわざ買うまでもないものだ。

557 名前:デフォルトの名無しさん [2012/06/02(土) 08:47:27.61 ]
ghciで日本語が数値に変換されるのですが、何が悪いのでしょう?
Prelude> zip [1..] ["りんご","みかん"]
[(1,"\12426\12435\12372"),(2,"\12415\12363\12435")]

ターミナル、LANGともにUTF-8。utf8-stringも入れて見ましたが変わりませんでした。
Mac Lion & ghc 7.0.3

558 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 10:14:51.22 ]
>>556
ネットで全文(英語)読めるしな。そういう意味では要らない。

559 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 10:21:22.33 ]
そうなんだよなあ。Webでだいたい読んじゃったから今さら買う気がしない。
訳が気になるだろうしね。

560 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 10:53:30.66 ]
読んじゃった人は買わなくていいじゃん。付録がちょっとあったけど、自分で英文読み通す勢いのある人は、
自己解決しちゃうだろうし悩む事もないって



561 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 11:39:40.83 ]
MLやircで詳しい兄貴達に質問できるぐらいの英語力が欲しい

562 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 11:42:25.55 ]
>>561
目標もちゃんと定まってて欲しているのなら、あとは勉強するだけだろ

なんでしんないの?

563 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 11:49:56.39 ]
お前はまず日本語を勉強しろw

564 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 11:52:49.19 ]
ごめんごめん

ちょっと日本語忘りかけてるから

565 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 12:04:21.25 ]
英語を勉強すると日本語が馬鹿になって死ぬ

twitpic.com/9j2u1m
> 「トムはこれからカムバックというところを、交通事故で亡くなってしまった。」

566 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 12:05:46.42 ]
#haskellでがんばって質問する
→ 懇切丁寧な説明が返ってくる
→ 読解するのがやっとで返事が出せず焦ってわけわかな英語を吐く
→ なにかまずいことを言ったらしくフレームウォー開始
→ ログオフして枕を濡らす
→ 数日後、自分の痴態がIRCログとしてWebで公開されていることを知り鬱になる

一部フィクション

567 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 12:17:29.81 ]
>>558
「英語読める人は出来の悪い邦訳書なんか読まずに原文当たれば良い」
というのがこの問題の正しい解決方法とは思えない。

折角Haskellに興味を持ってくれたCS入門者の悪書によって出端を挫かれ、
他の言語へ移ってしまうことこそ大きな損失だと考えなくてはならない。


568 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 12:21:50.78 ]
二位じゃダメなんですか?

569 名前:558 mailto:sage [2012/06/02(土) 12:49:04.42 ]
>>567
ぼかぁ翻訳の出来が悪いとは言ってないんだけどな。

英語全文がネットでタダで公開されてるんだから英語をスラスラ読める様な人には
要らないという普通に当たり前の事を書いただけだ。

自分はまだ11章ぐらいまでしか読んでないけど訳の質が悪いとは思わなかったなぁ。
7章ぐらいからは内容の難易度も少しずつ上がってるのでペースダウンしてる。

570 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 12:55:08.15 ]
>>557
別に何も悪くないよ。ghciの仕様。
(ghciは出力にshowを使うからshowの仕様でもある)



571 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 12:58:56.57 ]
>>570
多分質問者は対処方法を尋ねているのだと思われる

僕も知らないので教えてにゃん

572 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:04:40.35 ]
何がしたいのか微妙に分からんから対処法を考えるのも難しいけど、
エスケープされるのが嫌ならshowを使わなきゃいい。
自分で format :: [(Integer, String)] -> String
みたいなのを書いて、putStrLn $ format $ zip [1..] ["りんご","みかん"]
するとか。

いちいちそんなことするのが馬鹿らしいと思うなら、showの仕様を変えるように提案するしかないね…

573 名前:デフォルトの名無しさん [2012/06/02(土) 13:12:53.72 ]
>>572
ありがとう!

574 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:17:06.20 ]
tanakhHideyuki Tanaka 35分前
あえー。そんなに翻訳ひどくなってますかね… > 某スレ

575 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:19:50.70 ]
翻訳はかなりマシの方だけど。
バランスが悪いな、全体真面目な文章なのに、突然ギャグが入ってくるところとか。

最高クラスの翻訳は日本人が書いたのと全く見分けがつかないけど。
これはところどころ、英文臭が漂うね。


576 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:23:06.25 ]
技術書ではむしろ、元の英文が想像できたほうがいい場合すらあるから、
それは問題ないと思う。

577 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:25:10.70 ]
>>567
日本の製本技術の素晴らしさを知らないとは…

578 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:29:33.39 ]
>>496,497,498 で誰も問題だとは言っていない。
普通の翻訳だよねって話。

もうちょっというと、本は素晴らしいただ訳者のレベルがまぁ○○だよね。

579 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:31:07.00 ]
あからさまな燃料投下はやめてください

580 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:40:45.28 ]
伏字にして気を使っているのに、あからさまとはどこを見ての判断なの?



581 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:40:51.82 ]
>>575
突然ギャグが入るのは原文もそうだし、ナンセンスギャグなんかもあって
完全にニュアンスを伝える翻訳は難しいだろうな。

関数を評価してる間に犬が誘拐されて家に火が付けられるとか日本語で言われると
このナンセンスさのノリが伝わりにくい。

582 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:49:28.57 ]
>>581
それ、ギリシア神話で似たようなのなかったっけ?

583 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:50:48.46 ]
>>582
イソップ物語

584 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:52:44.53 ]
>>580
直訳がまずいところを具体的に示すことなく
訳者のレベルを否定的な表現を交じえて伏せ字で示すあたり燃料以外になにがあるのかと

585 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:54:25.86 ]
翻訳がマズい箇所を1ページ目から列挙するの?

586 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:54:32.87 ]
>>584
ttp://blog-imgs-42.fc2.com/k/i/r/kira47/20120410171046c16.jpg

587 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:56:41.62 ]
>>584
ttp://30.media.tumblr.com/tumblr_l658t8RQIh1qz7zoso1_500.gif

588 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:56:49.19 ]
>>585
全部挙げろとは言わないが例示ぐらいあってもいいんじゃない

589 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 14:03:20.91 ]
>>588
読む人のレベルがバラバラなんだから学生同士が話しているのとはわけが違うぞ。
それなのに例示をしめした所で単にこじれるだけだっつーの。

590 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 14:05:37.10 ]
2chがこじれたところでどうということはない。



591 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 14:10:43.81 ]
>>589
著者のレベルも読む人のレベルによって左右されるものだよね
それを伏せ字を交じえて断じた時点でこじれるには十分だしこうして実際にこじれてる

592 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 14:31:32.85 ]
スレで査読がはじまると聞いて

593 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 15:29:52.31 ]
本当にまずい訳が多いならかいつまんで例示くらいできるでしょ

594 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 16:17:24.06 ]
>>593
>>578

595 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 16:25:46.66 ]
>>594
アホなのか?
訳者のレベルがまずいってんなら訳文で示せって言ってんだけど。
さっきからテメー苦し紛れに雑魚いレスつけやがってうざいんだよ

596 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 16:33:57.60 ]
>>595

 ┏━━━━━━┓
 ┃   Λ_Λ  ┃
 ┃   ( ;@Д@)  ┃
 ∧_∧ (m9  つ ┃
(   )人 Y     ┃
( O つ (_)    ┃
`ノ  イ━━━━━┛
し-"(_)

597 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 16:35:26.86 ]
今、全部列挙してるから、スレをサスペンドして待っててください

598 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 16:38:11.10 ]
オートリロード・オートスクロール便利ね。

599 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 17:39:24.51 ]
Haskellやるような知的レベルの高い人は暴言なんて吐かない(ρ_;)

600 名前:デフォルトの名無しさん [2012/06/02(土) 18:36:04.29 ]
どこだったか忘れたけど、「いくら〜しても〜しすぎることはない」っていう文を見たときは、ちょっと中学英語っぽ過ぎると思ったかな
でも全体としてはよく訳せてると思うよ…



601 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 18:54:21.55 ]
haskellスレがsicpスレ化しだしたね。しばらくはここも終ったと割りきるしか無いかも。
粘着さんが一番怖い。パール忍者が10人いるような状態が一番まずい。

602 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 19:22:15.27 ]
最初から訳は問題だとは誰も言っていないのに。
>>595
のようにまずいってどこがだとか
なかった問題をさもあるように作り上げて楽しむ愉快犯がいるからなぁ。

603 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 20:24:26.29 ]
英語の勉強しすぎると
和訳に使う日本語に慣れてしまうよね
無生物主語を日本語でも普通に使うようになったり

604 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 21:09:51.24 ]
そもそもSICPスレの基地外みたいな、日本語が怪しいクズ野郎が翻訳を語るとか

605 名前: ◆QZaw55cn4c mailto:sage [2012/06/02(土) 21:28:38.35 ]
>>603
無生物主語は立派なひとつの文体。つ村上春樹

606 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 22:08:05.30 ]
訳書を買った時、この本くらいのレベルで訳されてたら感謝感激する。
それくらい質が高い、と思う。

エキスパートプログラミングに匹敵するんじゃない?

607 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 22:49:31.03 ]
Windows7でLeksah 0.12を使っているのですが、
Altキーを押しても普通のWindowsアプリケーションのようにメニューにフォーカスが移動しません。

フォーカスをメニューに移動させるキーって用意されていないのでしょうか?

608 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 00:04:05.61 ]
訳者のレベルって何が言いたかったんだろう
訳が上質であれば私はそれでいいです

609 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 00:20:13.68 ]
>>603
それはある。俺の文章は既にその傾向にあるし、2ちゃんで翻訳文章みたいと
言われたことがあった。

610 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 00:30:56.98 ]
それはある。



611 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 00:48:46.14 ]
>>603

いくらか度を越した英語学習は私が和訳に用いる日本語の語彙にも影響を及ぼしていた

612 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 04:10:47.88 ]
修辞学の授業はっじまっるよ〜

613 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 07:02:53.46 ]
さあ諸君、議論したまえ

614 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 10:17:36.62 ]
>>529
> >>525 
> >>なんでこのレベルの奴がこの板にいんだよ年々レベル下がってるじゃねーか死ね
> 感情丸出しで書き込んでいて、自分が一番食物連鎖の最下層にいるって気付かないのかな?

俺食われちゃうのかな?

615 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 11:41:42.15 ]
>>607
他の人も問題にしています。

code.google.com/p/leksah/issues/detail?id=119
例えばこの人は [Alt + F] が効かないと言っていますが、
本質的に貴方と同じ問題を提起しています。

ただ、この人の問題提起は2009年9月で、
その現象の再現が確認できたのでどうにかしたいと、
プロジェクトメンバーが返事していますね。

にもかかわらず、未だに直っていないのなら、直す気がないのでしょう。

616 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 22:01:01.17 ]
結局訳に関する具体的な指摘はどうなったんだ

617 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 23:14:58.91 ]
結局、取り立てて言うほどのものはないという結論になったような。
訳者のレベル云々言っておきながら「訳に問題があるなんて誰が言った」という論理はよく分からんが、
まぁなんか一言言いたかったんだろう。あまり蒸し返さない方がいい。

618 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 23:18:38.10 ]
日本語とか偉そうなフリができるところで、権威を叩くと相対的に自分が賢くみえるの!!
他人のレベルが低い…俺のレベルは高い…俺輝いてるッ 気持イイッ

619 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 00:16:04.93 ]
昔からある基本的な手法だしな。そのおかげでいろんなマナー本やビジネス本が売れる。

620 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 00:17:22.83 ]
ああ、つまり「やってはいけません」系の本ね。
お買い上げありがとうございます。



621 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 06:34:45.23 ]
蛇足な上に正しいとは言い難い訳注の詳細マダー?

622 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 07:17:43.18 ]
訳者に難癖付けたい人が居るようですね^^

623 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 08:15:42.96 ]
(誤りの指摘==難癖)な厨房思考が透けてみえるレスあざーす

624 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 08:49:18.45 ]
具体的な指摘をできない限り、「蛇足な上に正しいとは言い難い訳注」と言うだけの奴こそ
誰がどう見ても厨房。>>623 はさらにそれ以下の消防。

625 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 09:20:11.41 ]
訳者のマッチポンプだろ。
ネットで調べてみたら胡散臭いやつだったしな

626 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 09:21:26.82 ]
三段論法を使えるがレッテルを貼る程度の能力

627 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 09:35:52.41 ]
三段論法も使えていなかったような

628 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 11:19:01.24 ]
                    /j
                   /__/ ‘,
                  //  ヽ  ', 、
                    //    ‘  ! ヽ             …わかった この話はやめよう
                /イ       ', l  ’
               iヘヘ,       l |  ’
               | nヘヘ _      | |   l            ハイ!! やめやめ
               | l_| | | ゝ ̄`ヽ | |〈 ̄ノ
               ゝソノノ   `ー‐' l ! ¨/
            n/7./7 ∧        j/ /     iヽiヽn
              |! |///7/:::ゝ   r===オ        | ! | |/~7
             i~| | | ,' '/:::::::::::ゝ、 l_こ./ヾ..     nl l .||/
             | | | | l {':j`i::::::::::::::::`ーr '         ||ー---{
              | '" ̄ ̄iノ .l::::::::::::::::::::::∧       | ゝ    ',
      , 一 r‐‐l   γ /、::::::::::::::::::::::::〉ー= ___  ヘ  ヽ   }
    / o  |!:::::}     / o` ー 、::::::::::::i o ,':::::::{`ヽ ヘ     ノ
   / o    ノ:::::∧   /ヽ  o  ヽ::::::::| o i::::::::ヽ、 /   /
   /    ノ::::::/    /::::::::ヽ  o  ヽ:::| o {::::::::::::::Υ   /


629 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 11:37:58.59 ]
>>621
p.57
O(NlogN)で抑えるなんて言い方は無い。上に抑えられていることをO(NlogN)程度と言う。
訳者はOの定義もΩやΘとの違いも知らないんだろうな。

所要時間の期待値の件も変。普通は所要時間の期待値と言ったら全ての可能な入力に対する期待値の事だが、この意味ではピボットをどう選ぼうが(選択に定数時間しかかけない限り)クイックソートの計算量の期待値はO(NlogN)だ。
ある特定の入力に対する確率的アルゴリズムの計算量の期待値のことを言いたいんだろうが、本文中には決定的アルゴリズムの話しか出て来てないのにいきなりそっちを持ち出すのは変。
p.150
正格評価でも、yesResultとnoResultの両方を評価するなら実装は遅延評価とほとんど変わらないので、この訳注は完全に嘘。片方しか評価したくない場合なら遅延評価の方が手軽に実装できるのは分かるが、二文目で自分で否定してる。


630 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 12:04:49.79 ]
そんなことよりお前らついにリリースしたぜ
Haskell Platform 2012.2.0.0
hackage.haskell.org/platform/

真っ赤かだな



631 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 12:38:14.93 ]
やっと普通の批判がでてきたのはよろこばしいぞ

p.57脚注は慣用的にアリだという気もしなくはないけど、確かに厳密な言葉を使わないかんね

p.150脚注は「二文目で否定して」はいないと思うのだがどうか。

で、多くて萎えた、という割には2つしかない(というか実質1つ?)なん?


632 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 12:42:05.03 ]
批評に必要な範囲で引用しておくか。
> p.160訳注: yesnoIfがこのように手軽に実装できたのは、
Haskellが遅延評価を基本とする言語だからこそ です。一方、
正格評価では、 yesnoIf を呼び出す前に、 yesResult と noResult
の両方を評価し終える必要があります!

違和感ないけどなぁ。まあ私なら「必要があります」というより、「yesnoIfの前に両方が評価されてしまいます」と書くかも


633 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 13:06:13.22 ]
>>632
それだと実装の手軽さは変わらないから、第一文も直さないとだめだな
p.160脚注は「正格評価だと事前に両方評価しないといけないから実装が面倒!」と読めるし、
嘘もしくは酷いミスリーディングと言われても仕方ない

634 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 15:56:19.49 ]
Haskellを理解する気は無いがdisりたくて仕方ないので
門外漢でも分かるところに噛み付いてるのがミエミエで微笑ましいw

>>633
お前、正格評価でyesnoIf実装してみろよ
まあ100%逃げるだろうけど

635 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 16:34:49.17 ]
Haskell手習い中って文脈考えると、訳注に厳密な評価器論を書くのはやり過ぎになるだろうな。
かと言って「手軽に実装できる」じゃ曖昧すぎる気もするが。

せいぜい「yesnoIfが通常の関数と同じように記述できるのは、
Haskellでは引数の評価に遅延評価を採用しているからです」と注意を促すくらいがいいところか。
訳本は持ってないが、元のテキストでは評価器の話はほとんどなくて、
lazinessに対する直感的な理解に留まってたんじゃないかな。

636 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 16:35:54.20 ]
>>634
>>632の前提なら、遅延評価版と一字一句変わらないな
話の流れ読めてる?

637 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 16:36:52.63 ]
「正格評価」は、先行する訳注で既に解説済みなのかな。

638 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 16:41:35.03 ]
yesResultもnoResultも副作用ないコード例しかないし、
本文でもlazinessには触れてない。
ここで遅延評価の訳注は本文の趣旨からいくとややミスリード気味だと思われる。
盛り込みたくなる気持ちはわかるが。

639 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 16:46:50.87 ]
yesResultとnoResultが両方評価されるとマズいのかどうかとか本文中に全く書いてないのに、
訳注でいきなりマズいこと前提にしてるのもおかしな話

640 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 18:33:18.04 ]
>>630
目玉は?



641 名前:547 mailto:sage [2012/06/04(月) 19:10:50.82 ]
>>549
分りにくい質問ですいませんでした。

歴史というのは、Haskell の遅延評価の実装が
初期に比べてどんどん効率的になってきた発展の歴史のことでした。

と言うのも、私は正直なところ既にかなり洗練されたものの仕組みを調べても、
なかなか頭に入らない類の人間なもので、原始的なところから
少しずつ調べていこうと思った次第です。

まずは教えていただいた資料を読み、さらに参考資料を辿って学んでみたいと思います。


GC と遅延評価は密接に絡んでいると思ったのですが、そうでもないのですね。
それでしたら、とりあえず GC は後回しにします。

>>552
ということで、興味自体はあるのですが、またの機会に読んでみようと思います。

お二人とも、ありがとうございました。

642 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 19:49:51.35 ]
GCないと遅延評価はやりづらい。
Thunkの回収を明示的にやるのは難しいから。
けどGCの研究がずっと先行してる。
独立に勉強して。

それからHaskellの処理系開発で遅延評価が劇的に向上したことはない。
むしろライブラリ実装の方で起きてる。

643 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 20:00:36.96 ]
あるいはHaskell的な関数型言語の実装についての基礎なら、
SimonさんのImplementing functional languages: a tutorialあたりをとっかかりに。

644 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 20:36:06.66 ]
もう何年も前の話だが、小説家で言語学者でもあるユーシュル・モリナーロ氏
と筆者は、同氏によるヘルマン・ヘッセ著『知と愛』の翻訳について話し合った
ことがある。モリナーロ氏はほぼ1年にわたり、その本のドイツ語版を抱えて
自宅と作業場となっていたカフェを行き来した。
あるとき、好奇心を抑えきれなくなったクリーニング店の店主がついに、
同氏が分厚い本を抱えている理由を聞いた。「翻訳しているんです」と
モリナーロ氏が説明すると、驚いて目を見開いた店主が聞き返した。
「一語残らずですか」

(略)

 筆者の友人のクリーニング屋が想像したように、一語一語を厳密に訳し
ていく翻訳など存在しない。うまい翻訳をするには、奇術師でもあるべき
だろう。本文の一部を手品師の鳩のように跡形もなく消し、
自らの感覚で部分的に手直しして全く違う場所に復活させる。
これはすべての生き生きとした魅力あふれる翻訳の決まりの悪い事実である。

本文が描写していることが自分たちの文化では非現実的に思えるとき、
翻訳者たちはときに自らの見解を差し挟む。たとえば、パリの住人が平日に
3時間かけて取る昼食を退屈で日常的なこととして描かなければならない
という現実に直面することがある。そんなときはどうするか。
とにかくそのまま進み、読者の大半がフランスの文化に十分精通していて、
そのきわめて日常的なことをひどく非現実的とは思わないことを願うばかり
である。

文化的な違いが最も露骨に表れるのは、翻訳の破たんとも考えられている
言語学的難題、だじゃれである。
(略)

jp.wsj.com/Life-Style/node_451636

645 名前:547 mailto:sage [2012/06/04(月) 20:48:07.98 ]
>>642 >>643
わかりました。

同時にはできないので、まずは遅延評価の根幹から学びます。

> それからHaskellの処理系開発で遅延評価が劇的に向上したことはない。

これから学ぼうとする私にとっては大変有難い事実です。

646 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:27:15.02 ]
>>633 >>635 >>639
いやいや、流れで言えばこの訳注はわりと適切な位置にあるし、第一文も完全に正しいでしょ
この遅延評価の話が出てくるのは7章も後半で、Haskellの多くの部分が説明された後だ。
「正格評価」という言葉こそないが、正格さについては遅延評価とあわせてpp.80-100あたりでfoldl'の話と一緒に長い議論があるし、
そんな一部分だけ取り出してミスリーディングとか騒がれてもナァ


647 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:28:53.20 ]
あと >>636 一字一句変わらないのかよw お前は「はじめに」を100回読み直すべき

648 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:37:07.50 ]
>>646
>第一文も完全に正しいでしょ
何の根拠も書かずに主張されてもな
じゃあ「遅延評価を基本とする言語だから」yesnoIfが「手軽に実装できる」ことを実例付きで説明してくれ

>>647
もう一回聞くが、話の流れ読めてる?

649 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:53:41.23 ]
632にあるようにyesnoIfの前に両方が評価されてしまってもいいなら、正格評価でもコードは変わらんでしょ
647はなにが言いたいのかさっぱり分からん

650 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:22:36.54 ]
>>648

副作用が絡まなくて意味がある例なら、たとえばこんなのとか。

sinc x = yesnoIf (x == 0) 1.0 (sin x / x)

正格評価だとクロージャにつつまなければいけないから、
yesnoIfの定義も呼び出し側もちょっとめんどくさくなる。





651 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:27:21.62 ]
このネタは、等式推論を使ってよいのであれば
yesResult /= ⊥ → yesno p = True → yesnoIf (yesno p) yesResult ⊥ /= ⊥
を使って説明するのが簡単なのだけど、あの本は等式推論について触れてないから
正直lispでifをdefunを使って実装した場合とdefmacroを使って実装した場合の違いを説明するよう泥臭い説明しかできないだろうな
原著でも⊥になる値を突っ込んだものを例に含めてないのはこの辺の厄介を回避する為なのだろうかと思ってしまう

652 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:33:27.08 ]
そんなムズカシイことかんがえなくても yesResult と noResult がコスト重い計算だったらどうなると想像すればいい
「はじめに」から順に読めばまあ多分普通にわかること


653 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:40:32.12 ]
>>650
だからそれは「yesnoIfの前に両方が評価されて欲しくない」という前提の場合だろ
yesnoIfの要件が本文中に全く書かれていないのに、
訳注で勝手にそんな前提を置いているのはおかしい、というのが今の話なんだが
むしろ脚注の第二文を見ると、「正格評価のyesnoIfではyesnoIfの前に両方が評価される」と読める
これは>>650で言っていること(そしておそらく脚注の第一文で言いたいこと)と真逆だ

654 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:44:16.38 ]
めんどくさいこと考えてる奴だなー要件もなにもHaskellのifなんだから遅延評価にきまってるだろ

655 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:48:13.67 ]
s/Haskellの//

656 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:51:24.19 ]
それだと脚注の第二文が意味不明だな
だって、クロージャに包んでyesResultとnoResultが先に評価されないようにする/できるんでしょ?

657 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:54:37.59 ]
もういいよ

658 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 23:04:41.57 ]
仮にifが遅延評価なのが常識だとしても、遅延評価を基本とする言語で遅延評価のものが手軽に実装できるのは当たり前
逆に正格評価のものを実装するなら正格評価を基本とする言語の方が手軽に実装できるだろう
それをまるで遅延評価の利点であるかのように書いてるp.160(p.150?)訳注はミスリーディングだと思うな

659 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 23:11:21.77 ]
いわゆるif文やif式を遅延評価だなんて言うのは適切でないと思うし、あまり聞いたこともない
ifは(thenとelseについて)非正格というならまだしも

660 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 23:13:56.48 ]
>>653
思うに脚注一文目で言いたいことはまさにそれ。
正格評価だと、引数を先に評価しないようにするためにクロージャやマクロ等を使わなければならないのがめんどくさいということ。

脚注二文目で言いたいことは多分、正格評価は引数を先に評価するという意味と思ってよいから、めんどくさくなるのは正格評価である以上仕方ないということ。

たしかに簡約だとか式の変換とかなしでのこの訳注は、Haskell初心者にとっては意味不明な気もする。




661 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 23:27:51.68 ]
まあ脚注二文目は変だね。ここは正格評価では簡単に書けない、という主張がこないと
話がつながらない。筆が滑ったんでしょ。


しかし、こんな全体としてこんなに出来のいい訳本に文句つけるなんて、Haskellerは贅沢すぎる。
「プログラミングの壺」の訳本をみせてやりたい。

662 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 23:40:58.96 ]
>>661
俺はこの議論には参加せずずっとROMってたんだが、
文句つけてくれたお陰で見識を得た

むしろ、ありがとうと言いたい

663 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 23:54:20.59 ]
>>631
しつこく聞いてくるから例を挙げただけだよ。全部書くのは面倒なので勘弁。

664 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 23:55:40.46 ]
いや、↑でありがとうって言ってる人いるし、先生続きをお願いします(あるなら)!

665 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 23:58:38.39 ]
>>661
なんでもそうだけど、声のデカいアホをコミュニティの代表扱いするのは辞めてほしい

666 名前:662 mailto:sage [2012/06/05(火) 00:01:11.27 ]
>>664
いや、俺は「文句つけるなんて、Haskellerは贅沢すぎる」に対して、
そう悪い面ばかりでもないよという意味で言ったまでだ

他のHaskellerには迷惑かもしれんし、そもそも訳の質についてはスレチだから、
ほどほどにしておいた方が良いと思うよ

667 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:06:59.51 ]
訳はともかく訳注に間違いがあるのなら指摘は有意義なことだと思うが.

668 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:07:43.42 ]
単に荒れるだけかと思ってウルトラマンを貼ってみたが、意外に議論がされたんだな。さすが。

669 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:15:16.32 ]
結局まともな指摘は>>629だけか

670 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 01:57:46.05 ]
>>646
> 正格さについては遅延評価とあわせてpp.80-100あたりでfoldl'の話と一緒に長い議論があるし、

Data.Listの紹介でfoldl'ってstricterなバージョンがありますって紹介してるだけじゃないの?



671 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 08:26:06.90 ]
こう書くと、どこが正格でどこが非正格で
落とし穴がこうで云々詳しく扱ったサイトありませんか?

672 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 12:43:25.09 ]
Haskell って、あるライブラリの関数の引数が
正格評価なのか非正格評価なのかって、
シグネチャ見るだけじゃ分らないんだよね。

ライブラリユーザーにこれを伝えるには、
関数名で分るようにしておくか、
ドキュメントに注意書きするくらいしか方法はないの?

673 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 14:48:32.13 ]
>>661
翻訳の技量は普通だけど
Haskellの技術者としては指導できるレベルじゃないってことでしょ。

平たくいえば、外国でHaskellの天才が書いた本を
自分もそのおこぼれを与ろうと低レベル者が翻訳してみせたのがこのすごいH本。

翻訳者もHaskellの天才だったら良かったのに、
単に金儲けがしたい、英語力はそこそこだが、
Haskellはちょっとかじった程度のやつに目をつけられて
金儲けの道具にされてしまった。
原作者は散々だったな、可哀想だって思ったのが
この騒動の発端だろう。

674 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 15:08:07.89 ]
        *'``・* 。
        |     `*。
       ,。∩      *    もなど
      + (´・ω・`) *。+゚
      `*。 ヽ、  つ *゚*
       `・+。*・' ゚⊃ +゚
       ☆   ∪~ 。*゚
        `・+。*・ ゚

675 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 15:12:08.66 ]
10年触ってる人がニワカ扱いとか2ch凄いですね

676 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 15:52:45.14 ]
10年?
中学3年、高校3年、大学4年英語勉強して
英語喋れない奴は腐るほどいるぞw

677 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 16:00:05.43 ]
英語は使わなければ使えるようにならないというのがあるな
同様にHaskellもそれで食ってるぐらいじゃないと実用性を啓蒙できる立場では無いとか
本や講演で儲けるだけの段階ではマルチとかあやしいビジネスセミナーとか宗教とかと同レベルだと
確かに近年の○○勉強会みたいな類はそういう妙な空気があるように思える

678 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 16:29:01.30 ]
10年触っている人だから天才ってことはないな。

679 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 16:35:30.25 ]
最近SICPスレで暴れても誰も相手にしてくれないのでこっちに来ました!
なんかしんないけど言いがかりみたいないちゃもんつけて翻訳の悪口
を言って盛り上がるスレですよね?

正直「すごいハスケル」って本は買ってないし読んでないし読むつもりもないんですが
翻訳の質にガンガン文句言って盛り上げていきますんでヨロシク! (^з^)-☆

680 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 16:56:11.29 ]
>>501,502みたいな日本語不自由レベルの人間が叩いているかと思うと頭が痛くなるな



681 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 17:09:29.22 ]
>>680
十分意味が通じるけど?

682 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 17:11:21.36 ]
蒸し返し禁止

683 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 17:13:22.44 ]
>>680
2chならそれで十分だろ。


684 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 17:46:11.31 ]
>>680
どこの学士様ですか?

685 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 18:34:20.52 ]
この反応は図星ですっていってるようなもんだなw

686 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 19:23:26.40 ]
原書読めないから翻訳本買ってるんでしょ。
そんな英語力で偉そうに文句言って恥ずかしくないんかな?

687 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 19:31:38.77 ]
>>686
恥ずかしいとか、そんなのどうでもいい

良くない部分、おかしい部分、曖昧な部分は
気づいた者が躊躇なく指摘すべき

恥ずかしがる理由なんて微塵もない


688 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 19:37:39.12 ]
そんなことよりバンドやろうぜ
www.bigbasstabs.com/

俺タンバリンな

689 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 20:05:27.72 ]
QT 今月の誕生日に彼女からすごいH本プレゼントされたらどうしよう。。。準備しておくべきだろうか。。。 [うさみみ*´×`*エンジニア]

690 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 20:10:11.96 ]
お前にはまだ早い
はじめてのCをお返しとけ




691 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 20:40:40.78 ]
ttps://twitter.com/AoiMoe/status/210614093273497600
> 「すごいC楽しく学ぼう」という保健体育本はまだですか

692 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 20:50:35.36 ]
H本ネタはいい加減飽きた
ム板てネタに対してちょっとしつこいな

693 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 21:58:42.33 ]
粘着力ないやつはプログラマー向かないだろ。
コンピュータは適当にこなしといてくれないし。

694 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 22:28:40.23 ]
終わった後で蒸し返せばいいやと思うと、終わる前に粘ることができなくなる

695 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 22:30:46.90 ]
同じネタを入れると常に同じ返しがくる

…さすがHaskellスレ

696 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 07:39:22.11 ]
コンプ丸出しで訳者の印象だけを語るってのがどうにもね。。。
説得力ないし、もっとHaskellの内容で勝負しようぜ


697 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 07:41:28.68 ]
第一Haskellの天才ってなんだよw発想があきらかにオッサン

698 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 08:13:12.11 ]
>>696
>>646, 647, 652辺りで一人頓珍漢な指摘してた人?

699 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 08:45:52.89 ]
↑こいつ病気だろ

700 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 09:41:25.54 ]
図星だったのか



701 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 10:15:30.48 ]
>>673
突っ込まれてる内容を見る限り、
Haskellの技術者としては、と言うよりエンジニアとしては、だな

702 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 13:58:27.24 ]
まず「叩く」という関数を呼ぶが引数である「叩く理由」は遅延評価というか何も考えてない。
さすがHaskellerやで。

703 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 14:56:27.48 ]
一般論として、訳があるのはいいこと。よっぽどの悪訳でない限り。
チュートリアルなんだから、沢山の人に読まれるのがよい。
誤訳等の指摘があるのいいこと。度を越さない限り。
チュートリアルなんだから、よりよい訳になれば、なおいい。
叩きすぎるのも、容認しすぎるのも思考停止に陥りやすい。

704 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 16:46:43.04 ]
このスレどこに向かうの?

705 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 16:52:46.55 ]
斜に向かってます

706 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 19:47:00.73 ]
reactive ってバージョンと更新日の新旧がテレコってるのがあるんだけど。

reactive-0.5.0.1
  Sat Sep 10 21:41:20 UTC 2011
  Uploaded by RussellOConnor
  Built on ghc-7.2

reactive-0.11.5
  Upload date Sat Sep 10 21:41:20 UTC 2011
  Uploaded by ConalElliott
  Built on ghc-6.12

これって、ConalElliott に代わって RussellOConnor が
昔のバージョン 0.5.0.1 を ghc-7.2 で焼き直したから、
こっちを使ってくれってこと?


あと、ConalElliott って reactive も自身のブログも全然更新しないんだけど、
ひょっとしてもう死んだ? まだ生きてるよね

707 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 21:59:17.26 ]
とりあえずどんなものか試すなら0.5.0.1を使ってチョ、
くらいの意味じゃないかなぁ。学生の講義で使ったとか?まったくの憶測だけど
RussellOConnorのサイトを探したら r6.ca/code.html にあったけど、
特にこのパッケージについて言及ないっぽい

708 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 22:39:37.86 ]
Parsec の st の意味が分かりません
どこを見ればいいでしょうか?

709 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 23:13:24.34 ]
stって何だっけ。
どこで出てくるstなのか書いてもらえないと答えようがないよー


710 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 23:25:43.90 ]
>>709
↓ みたいな感じで関数の型に出てくる st です

GenParser Char st [String]



711 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 23:29:23.43 ]
STate(状態)って意味の仮引数名でしょ。
parsecがstate monadなのは理解できてるの?

712 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 23:34:29.64 ]
>>711
そもそもParsecってStateMonadなの?

713 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 23:36:06.48 ]
使わないから知らないけど、hackage見る限りそのParsecは古いんじゃない?最新だとそんな型ないよ

さておき、
hackage.haskell.org/packages/archive/parsec/2.1.0.1/doc/html/src/Text-ParserCombinators-Parsec-Prim.html#line-126
を読むと
newtype GenParser tok st a = Parser (State tok st -> Consumed (Reply tok st a))
となっており、 つまり State型に渡す型引数だ。 (Replyの引数も最終的にState型に渡っている)
パーサーにユーザ定義の状態を持たせたいときに、このst型に具体的な型を代入して使う。

状態は
getState :: GenParser tok st st
で得られ
setState :: st -> GenParser tok st ()
で更新できる。

こんなところかな?
本当はソースでなくParsecのマニュアルを読むのがいいと思うけどとりあえず


714 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 23:37:33.72 ]
でこのソース読むと OkのときStateが帰るからStateモナドといってよいと思う。
あるいはErrorTとStateを組み合わせて同じものを作ってみるのも良いかも

715 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 23:41:09.72 ]
というか仮引数のままでいいのか…

716 名前:デフォルトの名無しさん [2012/06/08(金) 23:43:06.83 ]
それが多相性なのでしょう

717 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 23:47:17.97 ]
>>714 ErrorTとStateでは作れないなー StateTとEitherかな?

718 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 01:19:41.25 ]
>>716
パーサのstの部分って、パーサを作ってる段階じゃ何が入るか分からないの?


719 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 13:48:13.74 ]
たとえば
f :: GenParser tok st ()
という関数があったら、st の部分に何が入っても f を使える、ということ(多相性)
逆にいえば、 f 自身は、 st に何が入ってるか知らない(中身を触れない)

720 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 14:02:28.81 ]
>>719
パーサがパースしてる最中に f を何度もいろんな使い方するってことか



721 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 15:44:48.67 ]
reactive-banana って reactive のラッパーかと思ってて
ずっと手を付けなかった自分を殴りたい

722 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 16:30:44.77 ]
>>720 というより「stの型にかかわらずどんなパーサーでfを使える」という感じ

一つのパーサーの実行途中でstの型が変わることはない。
1+1+1 という式が → 2+1 → 3 と計算される途中でString型に変わったりしないのと同じ

723 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 19:32:42.81 ]
さらにreactive-banana-baconというのもありまして
これもreactive-bananaの単なる追加パッケージかと思いきやreactive-bananaに依存しないまったく別の実装だったりする

724 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 20:14:18.18 ]
banaan とか bacon とか名前適当すぎワロタ

725 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 20:21:25.86 ]
ばなーん

じゃなくて

ばなな

726 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 20:22:18.09 ]
商標とかぶるとめんどくさいから適当な名前が増えるのかも

727 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 20:43:29.82 ]
俺もなんかつくって reactive-chikuwa とか名前付けようかな

728 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 21:26:25.15 ]
あぁ、あれですね
ゲーム作る前に名前から決める奴

729 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 21:41:08.79 ]
あるあるー

730 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 22:03:24.18 ]
作業用ディレクトリにhogeとかunkoとか適当な名前のプロジェクトが沢山ある



731 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 22:03:40.31 ]
ここってこんなにまったり雑談スレだったっけ

732 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 22:12:23.17 ]
>>731
爆弾でもいいから Haskell 関連の話題を投下してくれ

733 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 22:33:37.62 ]
happyで生成したGLRパーサコードがコンパイルエラーになる件はいつ解消されますか?

734 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 22:39:55.15 ]
>>733
きみが作者にバグフィクスを送ったら改善される

735 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 23:57:31.71 ]
ということで雑談スレに戻るぜ

736 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 00:37:05.38 ]
RecordWildCards壊れた?

737 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 05:58:46.12 ]
>>736
きみが作者にバグフィクスを送ったら改善される

738 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 10:13:28.94 ]
同じギャグを2度続けられるとウザイ

739 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 13:13:07.99 ]
>>736 ghc7.4でも使えると思うけど、何か問題があった?

740 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 15:48:54.30 ]
>>739
時々こんなメッセージでコンパイラが落ちる
*** Exception: compiler\rename\RnPat.lhs:535:39-79: Irrefutable pattern failed for pattern gres@(gre : _)
まあぐぐってみたら普通に既知みたいだが・・・



741 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 16:04:16.67 ]
これか… hackage.haskell.org/trac/ghc/ticket/5892

742 名前:デフォルトの名無しさん [2012/06/11(月) 20:38:55.48 ]
上でSICPが話題になってたから
読んでみたら本当に糞訳すぎて噴いたわw

743 名前:デフォルトの名無しさん [2012/06/11(月) 20:39:56.97 ]
しかしこれは本当に酷い訳だわ
擁護しているの関係者としか思えん

744 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 21:21:11.52 ]
reactive-banana のチュートリアルって HaskellWiki のしかないですか?
サンプルじゃなくてチュートリアルです

745 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 21:35:14.31 ]
>>744
stackoverflowより
stackoverflow.com/questions/9210412/recommended-reading-tutorials-to-understand-reactive-banana-frp-library

746 名前:デフォルトの名無しさん mailto:sage [2012/06/12(火) 07:35:26.82 ]
>>745
ありがとうございます。

なるほど、まだ変動的だからちゃんとしたチュートリアルは作れないのですね。
作者のブログやstackoverflowの記事を参考にてみます。


747 名前:uy mailto:sage [2012/06/12(火) 13:27:06.82 ]
HaskellってEsoteric programming language
じゃなければただのバカだよね

748 名前:デフォルトの名無しさん mailto:sage [2012/06/12(火) 20:41:36.15 ]
Erotic Programming Language に見えた。

749 名前:デフォルトの名無しさん mailto:sage [2012/06/12(火) 21:16:42.69 ]
アポカリプティブ・ファンクター

750 名前:デフォルトの名無しさん mailto:sage [2012/06/12(火) 21:18:38.03 ]
catastrophic morphism



751 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 12:41:17.14 ]
質問

reactive-banana って、時間の概念は直接表には出てこないんだよね。
同時に発生したイベントの union はどちらが先に起こったことにするかとか、
その程度の間接的な扱いしかできない。

例えば、sin(アプリ開始からのt秒) という値を持つビヘイビアが作りたいなら、
現在時間を値に持つイベントを作り、それを自分のイベントループの中で毎回発火させ、
そのイベントからビヘイビアに変換させるのが普通なのかな。

reactive パッケージの time みたいに、時間のビヘイビアを直接得る方法はないの?

752 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 19:43:49.70 ]
>>751
ないから作るしかない。
IOモナドからBehavior作るfromPollって関数があるからそれ使えばいいと思う。

753 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 20:31:56.94 ]
>>752
やっぱり、そういうことなのね。

FRP と一言で言っても、いろいろな設計思想があって面白いな。

754 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 17:47:08.09 ]
お前らなんでも知ってるなぁ
一日中Haskellでもやってんの?

755 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 17:54:59.06 ]
Haskellで何か作っていたり、Haskellの応用を身につけようとすると
むしろHaskell以外の方がやること多くないか。

756 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 22:02:09.61 ]
入門書買ったので、早速ダウンロードして使おうと hackage.haskell.org/platform/ に
アクセスしたのですが繋がりません。ひょっとしてうちだけ?

757 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 22:05:48.05 ]
www.haskell.org/haskellwiki/Mailing_lists#Archives とかで最近の
投稿見てもサイトダウンとか何も触れてないし……

758 名前:デフォルトの名無しさん [2012/06/14(木) 22:06:37.28 ]
俺はつながるぞ
ところで入門書は何買ったん?

759 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 23:03:05.31 ]
前もいた、気がするな。
ネットワークの設定の影響だと思うが。

d.hatena.ne.jp/sirocco/touch/20110905/1315255573

760 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 23:19:43.98 ]
つまりIPv6が悪さしてると



761 名前:756 mailto:sage [2012/06/15(金) 00:29:58.76 ]
入門書はオーム社の「すごいHaskell たのしく学ぼう!」です。
hackage.haskell.orgはDNSは引けてるみたいなんですが(69.30.63.204)
pingが通らないです。traceroute すると10hop目位から先行けないようです。
端末はMac OS X LionでIPv6も有効になっちゃってますがv4アドレス直指定でも
ping/tracerouteが通らないので、ネットワーク側の問題と思われたのですが……
と、これ以上は板違いなので控えます。今度くる時はHaskellの話題で。

762 名前:デフォルトの名無しさん [2012/06/15(金) 00:49:53.85 ]
macだったらbrewでGHCをインストールすればいいyp

763 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 00:55:54.91 ]
はい、MacPortsでインストール中です。

764 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 07:43:46.13 ]
>>761
以前、つながらないと言っていた者です。

プライベートアドレスを割り振ってるところではつながらない可能性があるみたい。
ルーターの問題なのかな?(IPv6に対応していない?) 詳しくはわかりません。

自分のマンションも、プライベートアドレスが割り当てられてて、つながらないです。
自分の場合は、適当なプロキシを指せばつながります。

765 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 16:10:08.91 ]
(接続しているISPも含めて)IPv6使える環境じゃないのに、
IPv6を有効にしている/有効になっているクライアントが悪い。

766 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 16:49:05.30 ]
ネットワーク系のプログラムは全部IPv6無効にしてコンパイルし直してるわ

767 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 16:11:25.13 ]
文字列が数字として読み取れるならその数値を返す
f :: String -> Maybe Integer のような関数は標準ライブラリにありましたっけ?

768 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 16:59:24.76 ]
reads だね。効率は非常に悪いけどとりあえず使える

769 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 19:20:54.00 ]
リワハ読んだ後に進むべき書籍を教えて

770 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 19:26:51.24 ]
>>769
Real World Haskell の次は、実際にプログラムを書くとかソースを読むとかすればいいと思う。



771 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 19:27:56.57 ]
ハロワ行った後に進むべき書籍を教えて

772 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 19:43:24.68 ]
>>768
Maybe ではないけど、指定した型の数値に変換できなければ
空リストが返ってくるってことね

ありがと

773 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 19:46:55.65 ]
リワハ読んだ後に読むべきソース教えて

774 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 20:43:35.03 ]
>>773
目的は何?

775 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 21:37:29.24 ]
>>774
揺るぎなき基礎力です

776 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 22:44:49.44 ]
>>769
規格書読めば?

777 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 23:46:34.01 ]
>>775
揺るがなくなるまで再帰的にリワハ読んでろ

不動点だ

778 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 01:58:40.62 ]
>>777
ワロタ

779 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 16:28:05.35 ]
>>773
RWHに練習問題や研究課題が載ってるからそれを解いてみればいかがでしょうか

780 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 20:01:54.89 ]
ハスプラバージョンアップの度に
自分で入れてたライブラリ再ビルド・インストール(´・ω`・)メンドクセ



781 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 20:05:54.82 ]
>>780
ようこそデビアンへ!

782 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 21:51:22.26 ]
ブルームフィルタ用ライブラリはどこですか?

783 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 22:24:24.58 ]
リワハって何か思った。ハロワを皮肉ったのかと思ってたよ。

784 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 22:50:35.17 ]
>>782
君の環境からは HackageDB のページは見れないのですか?

785 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 22:56:47.89 ]
× 見れない
○ 見られない

786 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 23:03:27.35 ]
>>785
ご指摘ありがとうございます。

787 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 23:04:22.65 ]
>>784
ネカフェでダウンロードしてきたArchive.tarならあります

788 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 23:12:04.96 ]
>>787
それがどういう状況なのか今ひとつ分りませんが、
要するに君の今の環境では HackageDB にアクセスできないのですね。

それは残念です。
せっかく HackageDB に bloomfilter パッケージがあるのに使えませんね。

789 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 23:18:52.02 ]
ネカフェでArchive.tarわろたw マジレスするとそいつを展開すればbloomfilter出てくるのでは

790 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 23:19:26.92 ]
>>788
そこに飛んで下の方にあるarchive(238MB)をダウンロードして帰ってきました

ここに全部入ってるわけではないのですか?



791 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 23:33:50.72 ]
>>790
私は >>788 のレスの通り Archive.tar の意味するところが分っていません。
私に分っているのは HackageDB に bloomfilter パッケージがあるという事だけです。

私よりも >>789 の方が詳しそうです。

792 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 23:34:17.37 ]
オープン2chにもHaskellスレあったね。

793 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 23:35:16.07 ]
むむむ

794 名前:793 mailto:sage [2012/06/17(日) 23:55:34.53 ]
自己解決しました
bloomfilter-1.2.6.8.tarですね

7-ZIPにファイル名検索機能があれば見落とさなかったんですが

795 名前:デフォルトの名無しさん mailto:sage [2012/06/18(月) 07:48:44.23 ]
誰か794にインターネット接続環境をあげてください;_;

796 名前:デフォルトの名無しさん mailto:sage [2012/06/18(月) 12:08:53.25 ]
鳩をプレゼントしたいです。

797 名前:デフォルトの名無しさん mailto:sage [2012/06/18(月) 12:37:28.05 ]
reactive-banamaって、n個前のタイミングのイベントの値を取ることはできんの?

たとえば、現在時刻を値として持つイベントがあって、
トリガーされる毎に前回のイベントとの差分値、つまり経過時間を得るとか。







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<205KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef