[過去ログ]
関数型プログラミング言語Haskell Part16 (978レス)
関数型プログラミング言語Haskell Part16 http://echo.5ch.net/test/read.cgi/tech/1317958045/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
171: デフォルトの名無しさん [sage] 2011/10/16(日) 12:26:32.54 敷居が高いおかげでドカタが流入してこないから Haskell界は住みやすくpurityが保たれている ありがとう>125 http://echo.5ch.net/test/read.cgi/tech/1317958045/171
172: デフォルトの名無しさん [sage] 2011/10/16(日) 12:35:10.32 >>171 でも、スレには何も知らずに荒らす連中が来るようになってる。 日本語版stackoverflowでもあったほうがいいんだろうかね。 http://echo.5ch.net/test/read.cgi/tech/1317958045/172
173: デフォルトの名無しさん [sage] 2011/10/16(日) 12:59:22.17 日本語版か...おぞましいことになりそうな悪寒 忍法帳を発展さてくれればいいんだけど嫌がるひとも多いか あとプログラム板でもID表示とか http://echo.5ch.net/test/read.cgi/tech/1317958045/173
174: デフォルトの名無しさん [sage] 2011/10/16(日) 13:06:48.21 >>171 こうしてHaskell界では モナドモナドモナドモナカモナコ....だけでスレが消費され続けるのですた メデタシメデタシ http://echo.5ch.net/test/read.cgi/tech/1317958045/174
175: デフォルトの名無しさん [sage] 2011/10/16(日) 13:44:32.75 くっぷぷぅ http://echo.5ch.net/test/read.cgi/tech/1317958045/175
176: デフォルトの名無しさん [sage] 2011/10/16(日) 14:15:40.79 >>168 > あるいはghciに-fobject-codeを渡すのでもいい なるほど、ロードする度にオブジェクトコードを生成するよう指示すれば ghc の様にコンパイルされるので非ボックス化タプルが使えるのですね で、欠点はコンパイルに時間を要するかも知れないことと、 ghci のデバッガからは見えないことですね > 少なくとも今はできない わかりました デバッガは今までも特に活用したことないので、 -fobject-code オプションでの対処で凌ぐことにします http://echo.5ch.net/test/read.cgi/tech/1317958045/176
177: デフォルトの名無しさん [sage] 2011/10/16(日) 14:27:50.62 >>173 おぞましくさせない工夫が必要なほど幼稚な日本語をしゃべる人 (日本人とは限らない。)が多いのは事実だ。アノニマスには 開放できない罠。一番いいのは英語を使えることというのは否定でけん。 http://echo.5ch.net/test/read.cgi/tech/1317958045/177
178: デフォルトの名無しさん [sage] 2011/10/16(日) 14:35:19.94 http://stackoverflow.com/questions/tagged/haskell stackoverflowのhaskellタグ。 http://echo.5ch.net/test/read.cgi/tech/1317958045/178
179: デフォルトの名無しさん [sage] 2011/10/17(月) 22:52:36.79 haskellって、コンパイルしたらJavaバイトコードのような 中間言語を吐き出すのでしょうか? それとも機械後を吐き出してくれるのでしょうか? http://echo.5ch.net/test/read.cgi/tech/1317958045/179
180: デフォルトの名無しさん [sage] 2011/10/17(月) 23:01:04.24 >>179 それは言語の仕様ではないので厳密には実装によるが、デファクトスタンダードのGHCは基本的にネイティブコードを吐く。 http://echo.5ch.net/test/read.cgi/tech/1317958045/180
181: デフォルトの名無しさん [sage] 2011/10/18(火) 00:53:08.36 http://www.haskell.org/ghc/ では、 > GHC compiles Haskell code either directly to native code or using LLVM as a back-end. GHC can also > generate C code as an intermediate target for porting to new platforms. The interactive > environment compiles Haskell to bytecode, and supports execution of mixed bytecode/compiled programs. という紹介になってた。 http://echo.5ch.net/test/read.cgi/tech/1317958045/181
182: 179 [sage] 2011/10/18(火) 13:32:09.88 ありがとうございます。 http://echo.5ch.net/test/read.cgi/tech/1317958045/182
183: デフォルトの名無しさん [sage] 2011/10/20(木) 11:39:21.53 質問なのですが、windows上でGHCでコンパイルして、出来上がったhello.exeファイルをダブルクリックで実行するには、どうすればよいですか? コマンドプロンプトから、ファイル名を入力したら、実行はできます。 http://echo.5ch.net/test/read.cgi/tech/1317958045/183
184: デフォルトの名無しさん [sage] 2011/10/20(木) 12:31:00.43 >>183 たぶん、実行はされているけど、すぐにプログラムが終了してコンソールが閉じているだけだと思う main = let loop = loop in putStr "Hello World!!\n" >> loop でコンパイルしてダブルクリックしてみ http://echo.5ch.net/test/read.cgi/tech/1317958045/184
185: デフォルトの名無しさん [sage] 2011/10/20(木) 13:20:15.64 >>184 ありがとうございます! その通りでした! http://echo.5ch.net/test/read.cgi/tech/1317958045/185
186: デフォルトの名無しさん [sage] 2011/10/20(木) 22:49:20.89 FizzBuzzを剰余使って書くのはすぐ思いつくけど、以下のは新鮮だった。 どうやったらこんな発想が出来る様になるんだろ。 fizz = cycle ["","","Fizz"] buzz = cycle ["","","","","Buzz"] f s n | s == "" = show n | otherwise = s main = print $ zipWith f (zipWith (++) fizz buzz) [1..100] http://echo.5ch.net/test/read.cgi/tech/1317958045/186
187: デフォルトの名無しさん [sage] 2011/10/20(木) 23:11:26.56 >>186 オレ、そのアルゴリズム自力で思いついたけど、そんなに不思議かな。 たしか、3を法とする商群と5を法とする商群をなんとかすれば・・・ みたいなことを考えていて、思いついた http://echo.5ch.net/test/read.cgi/tech/1317958045/187
188: 186 [sage] 2011/10/20(木) 23:29:22.83 >>187 C、java、rubyと来たのでmapは理解していたけど、手続き型言語には無い発想だと思う。 ついでに言うと、今なら手続き型言語ユーザーが何故、関数型言語を誤解するのか判る気がする。 「関数」「型」「評価」など、同じ字面でも関数型言語とは違う意味で説明される物が多い。 http://echo.5ch.net/test/read.cgi/tech/1317958045/188
189: SCHEME餃子 ◆8X2XSCHEME [sage] 2011/10/20(木) 23:52:51.12 要するに根本的なパラダイムが違うって話だよな 英語で話すときは英語で考えなきゃ滑らかに話せないって話は聞くけど、 Haskell で書くときは Haskell で考えなきゃいけないってことだろ http://echo.5ch.net/test/read.cgi/tech/1317958045/189
190: デフォルトの名無しさん [sage] 2011/10/20(木) 23:53:46.97 >>186 いいかどうかは別にして、カウンタやインデキシングを避けて、 何でもリストで考えればそうなる。 そうするとリストの代数的操作でプログラミングするようになる。 Richard Bird先生の本を読むのがいいかもしれない。 http://echo.5ch.net/test/read.cgi/tech/1317958045/190
191: 187 [sage] 2011/10/21(金) 00:00:33.30 >>188 逆にオレはfor文でFizzBuzz書けとかいわれたら、戸惑うかな? たぶん戸惑うな。 whileでとか憤死するレベル。 http://echo.5ch.net/test/read.cgi/tech/1317958045/191
192: デフォルトの名無しさん [sage] 2011/10/21(金) 00:05:06.91 よーしパパFizzモナドとBuzzモナドを合成しちゃうぞー http://echo.5ch.net/test/read.cgi/tech/1317958045/192
193: デフォルトの名無しさん [sage] 2011/10/21(金) 00:10:44.14 でも それ、1から連続する数字のリストだから正解なだけで あまりいい回答ではないと思ったかな。fibbuzzとかはやってるけど 関数型言語の普通の作り方すれば、最後のリストを[1..100]と 違うのだけの違いだから新鮮にも見えなかったよ。抽象化が得意な言語 とそうでないものでのさがあるんだなということかな。 prnFizzBuzz = mapM_ putStrLn.FizzBuzz FizzBuzz n 。。。パターンマッチ で prnFizzBuzz [1..100] とか prnFizzBuzz fibSeq とかでおしまいだろ? http://echo.5ch.net/test/read.cgi/tech/1317958045/193
194: デフォルトの名無しさん [sage] 2011/10/21(金) 00:14:42.74 for文などでかけと言われたらかけるけど、関数型の記述に比べれば 泥臭くって、抽象化ができないよね。関数オブジェクトなどを使って 抽象化させて作るんだったら、初級っぽくないだろうし。 http://echo.5ch.net/test/read.cgi/tech/1317958045/194
195: デフォルトの名無しさん [sage] 2011/10/21(金) 07:52:37.50 mplusを使ってfizzbuzzを書こうとすると現行のMonadPlusの駄目な部分がわかるかも http://echo.5ch.net/test/read.cgi/tech/1317958045/195
196: 186 [sage] 2011/10/21(金) 08:04:56.77 >>190 >>>186 >Richard Bird先生の本を読むのがいいかもしれない。 情報有難う! Research paperを幾つか、ざっと読んでみた。 まだよく理解出来ない所も多いけど、Haskellって面白い。 http://echo.5ch.net/test/read.cgi/tech/1317958045/196
197: デフォルトの名無しさん [sage] 2011/10/21(金) 08:52:36.35 >>194 細かい抽象化は全体からみれば効果がないだろうよ http://echo.5ch.net/test/read.cgi/tech/1317958045/197
198: デフォルトの名無しさん [sage] 2011/10/21(金) 09:48:20.45 >>196 鳥先生に興味が出てきたら早速ピアソンのサイトへ行ってAlgebra of Programmingを手に入れるんだ http://echo.5ch.net/test/read.cgi/tech/1317958045/198
199: デフォルトの名無しさん [sage] 2011/10/21(金) 10:38:23.33 >>197 何を優先してるかで違うのは当然だが、抽象化のセンスを見るのにも いいとは思うがな。ボイラープレイトを取り除くにしても、この手の単純な 抽象化が出来なければ難しく感じるだろう。 余談だが、この辺の抽象化のセンスってLispのマクロを作るセンスにも通じ てる印象がある。マクロで関数を作成するにしてもマクロを作成するにして もボイラープレイと除去と同じセンス必要なので。 http://echo.5ch.net/test/read.cgi/tech/1317958045/199
200: デフォルトの名無しさん [sage] 2011/10/21(金) 11:19:02.96 >>192のアイデアを水平合成とみて>>186のに適用するとこんな感じ? type Magma a = a -> a -> a class MonadZero m where mzero :: m a class MonadZero m => MonadOr m where mor :: Magma (m a) class MonadZero m => MonadPlus m where mplus :: Magma (m a) instance MonadZero [] where mzero = [] instance MonadOr [] where mor xs = if null xs then id else const xs instance MonadPlus [] where mplus = (++) fizz = cycle $ replicate 2 mzero `mplus` return "Fizz" buzz = cycle $ replicate 4 mzero `mplus` return "Buzz" fizzbuzz = zipWith mplus fizz buzz main = print $ zipWith mor fizzbuzz $ map show [1..100] listモナドの和を論理和(つまりMaybeモナドの和)、数値和の二通りに見ることで数値和で作ったfizzbuzzのパターンと数字のパターンを論理和で合成する・・・と Listを信号としてみれば、もろor回路による信号の合成だよな。始まる場所が変わることに対してはdrop等で開始位置をずらしてつまり信号のdelay回路か SignalArrowを使った抽象化でもいけそうに見えるな それはさておき垂直合成、つまりモナド変換子を使うのはどうなるんだろうか FizzT (FuzzT Identity Int) [String]みたいな型になればそれっぽいんだけど http://echo.5ch.net/test/read.cgi/tech/1317958045/200
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 778 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.010s