関数型プログラミング言語Haskell Part11
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/09/08(火) 13:03:13http://www.haskell.org/
日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
http://www.shido.info/hs/
過去ログ
関数型プログラミング言語Haskell
Part1 http://pc.2ch.net/tech/kako/996/996131288.html
Part2 http://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 http://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 http://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 http://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 http://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 http://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 http://pc11.2ch.net/test/read.cgi/tech/1193743693/
Part9 http://pc11.2ch.net/test/read.cgi/tech/1211010089/
Part10 http://pc12.2ch.net/test/read.cgi/tech/1231861873/
・2chの仕様により、行頭の半角スペースは表示されません。
コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
0002デフォルトの名無しさん
2009/09/08(火) 13:04:00・Introduction to Functional Programming Using Haskell
http://www.amazon.co.jp/exec/obidos/ASIN/0134843460/
・Haskell: The Craft of Functional Programming
http://www.amazon.co.jp/exec/obidos/ASIN/0201342758/
・The Fun of Programming
http://www.amazon.co.jp/exec/obidos/ASIN/1403907722/
・The Haskell School of Expression: Learning Functional Programming Through Multimedia
http://www.amazon.co.jp/exec/obidos/ASIN/0521644089/
・入門Haskell
http://item.rakuten.co.jp/book/1794880/
・ふつうのHaskellプログラミング
http://item.rakuten.co.jp/book/4052963/
・Programming in Haskell
http://www.amazon.co.jp/exec/obidos/ASIN/0521692695/
・Real World Haskell
http://www.amazon.co.jp/exec/obidos/ASIN/0596514980
0003デフォルトの名無しさん
2009/09/08(火) 13:07:07・関数型言語Part IV
http://pc11.2ch.net/test/read.cgi/tech/1083649982/
・【数学者】Haskellはクソ言語【オナニー】
http://pc11.2ch.net/test/read.cgi/tech/1128011645/
・純粋関数型言語Concurent Clean
http://pc11.2ch.net/test/read.cgi/tech/1075629340/
・関数型言語ML (SML, OCaml, etc.), Part 6
http://pc11.2ch.net/test/read.cgi/tech/1245017721/
・Lisp Scheme Part27
http://pc12.2ch.net/test/read.cgi/tech/1248657331/
・【入門】Common Lisp その6【質問よろず】
http://pc12.2ch.net/test/read.cgi/tech/1234884136/
・Emacs Lisp 3
http://pc11.2ch.net/test/read.cgi/tech/1191875993/
0004デフォルトの名無しさん
2009/09/08(火) 13:07:561. ソース中の文字列 hello = "こんにちは" :: String は UTF-8
2. これを ghci で表示することは可能:(ただし、環境変数 LANG を UTF-8 にしておくこと、
また、ターミナルも UTF-8 で入出力できるようにしておくこと)
Main> print hello
こんにちは
Main>
3. 入出力 IO は Latin-1 だが、
package utf8-string (http://code.haskell.org/utf8-string/)
を導入することにより、入出力を UTF-8 にすることができる
4. その他の文字列エンコード(ShiftJIS, JIS, EUC-JP など) は、
package iconv (http://hackage.haskell.org/cgi-bin/hackage-scripts/package/iconv)
で UTF-8 な文字列にする
とまあ、こういうことで、日本語表示できるわけだ。iconv package は MacOSX と *BSD では
cabal を少しいじらなければいけないことに注意しろよ(iconv.cabal のコメントに書いてある)
0005デフォルトの名無しさん
2009/09/08(火) 13:09:24Haskell98によると、Charは一つのUnicode文字を表す(6.1.2)。
これに従って、比較的新しいHugsやGHC(6.4系を含む)ではCharは32ビット整数になっている。
ただし、どちらも入出力に際しての変換が完全でない。具体的には、
・ソースコード中の文字列リテラル
・System.IOライブラリでの入出力
が問題になる。
1. GHC6.4.2以前
ソースコード・入出力ともLatin-1を仮定する。Latin-1ではバイト値と
コードポイントが一致するので、入力時には外部エンコードの各バイトがそのままCharに
入り、出力時にはCharの下位8ビットのみが出力されるような実装になっている。
このため、あるエンコーディング(Latin-1とは限らない)の入力をgetLineで受け取り、
それをそのままputStrで表示すれば、入力時とおなじエンコードにおいて正しく表示される。
これを利用して、[Char]を、本来のコードポイントの列としてではなく、特定のエンコードの下での
バイト列として使うことができる。ただし文字列リテラルについては、GHCはLatin-1として
不正な文字を受け付けないので、EUC-JPのような例外を除くと、単純にリテラルを使うことはできない。
3.最近のHugs(非WindowsかつCのwchar_tがUnicodeの環境、というかLinux)
ソースコード・入出力ともロケールのエンコードを利用する。
4.最近のHugs(Windows)
ソースコード・入出力ともLatin-1を仮定する。ただし文字列リテラルにShift-JISを使ってもエラーにならない。
5.最近のHugs(それ以外)
未調査。
0006デフォルトの名無しさん
2009/09/08(火) 13:10:14規格どおりにCharにUnicodeを入れるか、Charを単なるバイトとして扱うかの二択。
i. CharをUnicodeとして扱う
(3)以外の場合入出力で変換が必要。(2)または(3)以外の場合文字列リテラルでは
明示的なエスケープ(たとえば"\22234")が必要。
ii. Charをバイトとして扱う
(3)ではファイルをバイナリモードで開くなどの対策が必要。(1)でEUC-JPを使う場合と(4)
を除き文字列リテラルでは明示的なエスケープ(たとえば"\143\153")が必要。
lengthやisAlphaのような関数、およびwin32パッケージの関数(win32API)が正しく動作しない。
0007デフォルトの名無しさん
2009/09/08(火) 13:51:07/´ ̄`ヽ /: : : \_____/: : : : ヽ、
,. -‐┴─‐- <^ヽ、: : : : : : : : : : : : : : : : : : : : : : }
/: : : : : : : : : : : : : :`.ヽl____: : : : : : : : : : : : : : : : : : /
,. -──「`: : : : : : : : : :ヽ: : : : : : : : :\ `ヽ ̄ ̄ ̄ フ: : : : :/
/: :.,.-ァ: : : |: : : : : : : : : :\: : : : :: : : :ヽ \ /: : : :/
 ̄ ̄/: : : : ヽ: : : . . . . . . . . . . .、 \=--: : : :.i / /: : : : :/
/: : ∧: \: : : : : : : : : : ヽ: :\: : : 〃}/ /: : : : :/ 、
. /: : / . : : :! ヽ: : l\_\/: : : : :\: ヽ彡: : | /: : : : :/ |\
/: : ィ: : : : :.i: : | \!___/ ヽ:: : : : : : :\|:.:.:.:/:! ,': : : : / |: : \
/ / !: : : : :.ト‐|- ヽ \: : : : : l::::__:' :/ i: : : : :{ |: : : :.ヽ
l/ |: : :!: : .l: :| \: : : l´r. Y {: : : : :丶_______.ノ: : : : : :}
l: : :l: : :ト、| 、___,ィ ヽ: :| ゝ ノ '.: : : : : : : : : : : : : : : : : : : : : : /
|: : :ト、: |: :ヽ ___,彡 ´ ̄´ ヽl-‐' \: : : : : : : : : : : : : : : : : : イ
!: :从ヽ!ヽ.ハ=≠' , ///// ///u /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
V ヽ| }/// r‐'⌒ヽ イ〉、
ヽ、______ー‐‐' ィ´ /:/:7rt‐---、 こ、これは>>1乙じゃなくて
ィ幵ノ ./:/:./:.! !: : : : :!`ヽ ポニーテールなんだから
r‐'T¨「 |: | !:.∨:/:./: :| |: : : : .l: : : :\ 変な勘違いしないでよね!
/: : .|: :| !:.!ィ¨¨ヾ、:.:/ !: : : : l: : : : : :.\
0008デフォルトの名無しさん
2009/09/08(火) 19:40:240009デフォルトの名無しさん
2009/09/08(火) 22:10:550010デフォルトの名無しさん
2009/09/09(水) 01:00:48今月の予定らしいけどオライリーの近刊に出てないねー
0011デフォルトの名無しさん
2009/09/12(土) 16:14:07以下のモナドのなかで、union は Ord a であるところの Set a にしか使えません、と怒られるんだが、どこで制約課したらいいの?
---------------------------------------------------------------------------
import qualified Data.Set as S
data Distribution a =
Dist { sample :: a, support :: (S.Set a), expectation :: ((a -> Double) -> Double) }
always :: a -> Distribution a
always x = Dist { sample = x, support = S.singleton x, expectation = \f -> f x }
newtype Probability a = Prob { runProbability :: Distribution a }
instance Monad Probability where
p >>= f =
let x = runProbability p in
Prob $ Dist { sample = sample $ runProbability $ f (sample x),
support = S.fold (\d -> S.union $ support (runProbability $ f d)) (S.empty) (support x),
expectation = \g -> (expectation x) (\x -> (expectation (runProbability $ f x)) g) }
return a = Prob $ always a
----------------------------------------------------------------------------
Could not deduce (Ord b) from the context ()
arising from a use of `S.union'
Possible fix: add (Ord b) to the context of the type signature for `>>='
0012デフォルトの名無しさん
2009/09/12(土) 21:26:16今月じゃないって聞いてるよ。
近刊に出てきてないのはそのせいじゃないの?
0013デフォルトの名無しさん
2009/09/13(日) 02:35:04標準のモナドは要素の型に制約を掛けられない
逆に言うと、Probabilityは要素の型に制約があるのでMonadになっていない
だからどういう注釈をつけても無理
0014デフォルトの名無しさん
2009/09/13(日) 11:33:53ありがとう
ってことはリフレクションつかって自分で union 関数つくるしかないってことですね
しかし
Prelude Data.Set Data.Typeable> typeOf (empty :: Set Int)
>Set Int
はいいとして
Prelude Data.Set Data.Typeable> typeOf (empty :: (Ord a) => Set a)
>Set ()
これは納得いかねぇ…
0015デフォルトの名無しさん
2009/09/13(日) 14:42:57これだな
プロンプトじゃなくてファイルに書けばこの規則は適用されないから、ちゃんと曖昧エラーになるはず
0016デフォルトの名無しさん
2009/09/15(火) 00:12:55「週間Haskellコンパイラ」
なんて出してくれたら面白いのに
0017デフォルトの名無しさん
2009/09/15(火) 19:32:230018デフォルトの名無しさん
2009/09/15(火) 19:48:120019デフォルトの名無しさん
2009/09/15(火) 19:57:21んなもんはライブラリの解説がついた小冊子や小さなポスターでいいだろ。
トイレに貼って覚えるんだ。
0020デフォルトの名無しさん
2009/09/15(火) 20:01:21モナド構造わかってないけど、Distributionって超関数の意味?
ということは、Probabilityは確率測度ってこと?
0021デフォルトの名無しさん
2009/09/17(木) 14:35:020022デフォルトの名無しさん
2009/09/19(土) 13:45:46lifting というものの考え方がいまいちよく分かりません。
頭が混乱しています。
このページの例で言えば、lifting の考え方を使って
Picture でできる事を Animation でもできるようにしているんですよね。
では、先の章で定義した containsR 関数や containsS 関数は、
Resion から Shape への、あるいは Shape から Region への lifting ではないのですか。
Region できる contain の演算を Shape でもできるようにする、
あるいはその逆が実現されているような気がするのですが。
0023デフォルトの名無しさん
2009/09/19(土) 13:49:5410月に出るみたいだね
Books: 新刊・近刊情報
http://www.oreilly.co.jp/catalog/soon.html
0024デフォルトの名無しさん
2009/09/19(土) 18:42:38A Japanese version will be published around October 2009.
と、なってるよ。
第二次 haskell 本ブーム?
0025デフォルトの名無しさん
2009/09/20(日) 16:16:000026デフォルトの名無しさん
2009/09/20(日) 22:41:470027デフォルトの名無しさん
2009/09/21(月) 01:49:59あと岩波からもGofer本が出ていたから、それを入れると4冊目か
0028デフォルトの名無しさん
2009/09/21(月) 02:53:260029デフォルトの名無しさん
2009/09/21(月) 03:14:220030デフォルトの名無しさん
2009/09/21(月) 03:43:440031デフォルトの名無しさん
2009/09/21(月) 12:12:540032デフォルトの名無しさん
2009/09/21(月) 15:38:48という事が既に Lifting になっているのでしょうか。
型 A に対して可能な演算と型 B に対して可能な同類の演算の名前が違っていても、
それは Lifting には変わりなく、ただ同じ名前の演算が定義されていた方が
より洗練された Lifting だということなのでしょうか。
0033デフォルトの名無しさん
2009/09/22(火) 09:08:38普通出会わないだろ。liftMぐらいじゃね?
なんなのliftって?
0034デフォルトの名無しさん
2009/09/22(火) 09:11:41しょっぱなで出くわすのがlambda lifting
0035デフォルトの名無しさん
2009/09/22(火) 10:04:11でもいまの話ってtype lift(型持ち上げ)の話だろ。
0036デフォルトの名無しさん
2009/09/22(火) 10:10:02Payton JonesのImplementation of Functional Programming Languages
がどこかにpdfであったはず
13章を読むといいよ
0037デフォルトの名無しさん
2009/09/22(火) 10:13:040038デフォルトの名無しさん
2009/09/22(火) 11:23:12私が質問しているのは恐らく type lift の事だと思います。
もし type lift がどういうものか知っているのでしたら、
是非教えて頂きたいです。
172 ページを付近を飛ばしてとりあえず先に読み進んでみましたが、
やはり意味が分からず、内容が頭に入ってきません。
はっきりさせたいです。
0039デフォルトの名無しさん
2009/09/22(火) 23:39:450040デフォルトの名無しさん
2009/09/23(水) 06:08:41俺が知りたいのはtype liftingだ、lambda liftingなんて関係ない、
なんて言ってないで、関係あるものはさっさと読んだほうがいいぜ?
PJの説明はそう悪くないし。
0041デフォルトの名無しさん
2009/09/23(水) 07:33:17あんまり参考にならないだろうけど、型持ち上げはゲーデル(もしくはPM)にはじまる。
不完全性定理の証明に出てくる。
定義としては、
ある論理式aと別の論理式bがあるとして、
bがaの型持ち上げであるとは、bの全ての型のタイプ数を同じ数だけ
増加させると、bがaになることを指す。
というもの。PMがベースなのでそのままは適用できないけど、liftMを
使ってほぼ同じだと思われることは一応出来る。
a -> b => [a] -> [b]
みたいなの。
実は、自分もおなじことずっと調べていて、情報が欲しい。
そっちでなんか分かったら教えてくれると嬉しいかも。>>36も読んでみる。
004241
2009/09/23(水) 07:44:25じゃなかった。
a -> b -> (a,b) => [a] -> [b] -> [(a,b)]
だった。
タプルを作る関数を型持ち上げ=>直積を作る関数。
p x y = (x,y)
directProduct :: [a] -> [b] -> [(a,b)]
directProduct = liftM2 p
0043デフォルトの名無しさん
2009/09/23(水) 11:55:56ちょっと待って、飛躍しないで欲しい。
lambda liftingなんて関係ないなんて一言も言ってないし思ってもない。
そもそも、type lift と lambda lifting の違いすら今は全く分からない。
ただ、>>35 の言い方から、lambda lift は今回の話には繋がらないのか、
と推測しただけです(あの言い方ならそう推測してもおかしくないと思うが)。
で、私も「Implementation of Functional Programming Languages」を落としたので、
読んでみます。
0044デフォルトの名無しさん
2009/09/23(水) 12:57:400045デフォルトの名無しさん
2009/09/23(水) 20:51:05そうなんですか。
でも、やっぱりよく分かんないので、
とりあえず紹介された文献を読んでます。
まだ2章5節なんですけど、これはおもしろいですね。
ここまででもすごく勉強になります。
以前「Lambda-Calculus and Combinators an Introduction」を読んでいて、
p34 の不動点定理のところで意味が分からず挫折していたのですが、
ようやく意味が分かり、思わぬ収穫です。
13章にはほど遠いので、
lifting の意味はまだ全く分かんないですけど。
おもしろい文献の紹介、ありがとうございます。
0046デフォルトの名無しさん
2009/09/24(木) 10:00:51これは
単なる
イディオムだ
0047デフォルトの名無しさん
2009/09/24(木) 10:43:42う?どうもなか?最中どう?どうもなか?最中どう?どうもなか?最中どう?ど
うもなか?最中どう?どうもなか?もなかどう?どうもなか?もなかどう?どう
もなか?もなかどう?どうもなか?もなかどう?どうもなか?もなかどう?どう
もなか?もなかどう?どうもなか?もなかどう?どうもなか?もなどどう?どう
もなど?もなかどう?どうもなか?もなかどう?どうもなか?もなかどう?どう
もなか?もなかどう?どうもなか?もなかどう?どうもなか?もなかどう?どう
もなか?もなかどう?どうもなか?最中どう?どうもなか?最中どう?どうもな
か?最中どう?どうもなか?最中どう?どうもなか?最中どう?どうもなか?最
中どう?どうもなか?最中どう?どうもなか?最中どう?どうもなか?最中どう?
0048デフォルトの名無しさん
2009/09/24(木) 14:13:51http://d.hatena.ne.jp/coppieee/20090416/1239903149
導入したEclipse SDKはVersion: 3.3.2
Eclips用のHaskell モジュールが最新のEclips 3.5に未対応な為
リンク先の
>> 5. Windw -> Preferences -> Functional Programming -> Haskell -> Compiler -> GHC compiler -> Browseボタンでインストールしたghcのコンパイラ選択。
に有るように、正確にGHCの場所を指定しなくても動作する
ただし、インタープリタGHCiの場所を認識しないので、ghcの場所は正確に指定し
インタープリタghciの接待タブでghcの場所設定を利用するにチェックを入れる。
Eclipsの日本語化はhttp://mergedoc.sourceforge.jp/ を参考にどうぞ
少し疲れたw
0049デフォルトの名無しさん
2009/09/24(木) 16:19:33元の構造は保たないと。
ファンクタなんで。
0050デフォルトの名無しさん
2009/09/24(木) 18:50:01一意に決定しないと使い物にならない。
0051デフォルトの名無しさん
2009/09/24(木) 19:34:22ハルヒの射手座の日を思いだす
理由はよくわからない
0052デフォルトの名無しさん
2009/09/24(木) 23:04:26http://slashdot.jp/developers/09/09/24/039226.shtml
こういう連中がいる会社は最悪だろうな。まさに老害。
0053デフォルトの名無しさん
2009/09/24(木) 23:21:280054デフォルトの名無しさん
2009/09/24(木) 23:30:38極めれば即仙人になれる難しさだよね?
俺写像定義するだけで投げたレベルだからあれだけど
0055デフォルトの名無しさん
2009/09/24(木) 23:33:400056デフォルトの名無しさん
2009/09/24(木) 23:48:370057デフォルトの名無しさん
2009/09/24(木) 23:49:59死ぬまで学徒。
0058デフォルトの名無しさん
2009/09/26(土) 11:46:480059デフォルトの名無しさん
2009/09/26(土) 12:49:36別に難しくないじゃん。
数学系ならさほど障害は無いと思う。
0060デフォルトの名無しさん
2009/09/26(土) 13:00:42Coqよりだいぶマシ
0061デフォルトの名無しさん
2009/09/26(土) 22:47:020062デフォルトの名無しさん
2009/09/26(土) 22:55:22git/bzrメインに乗りかえたらすごい快適になった。Haskell製ってことで期待しすぎたのかもしれないが、
正直最近はdarcsなリポジトリみるとウンザリする。
0063デフォルトの名無しさん
2009/09/27(日) 00:51:45それ以降の奴ってdllが増えててやだなぁと思って使ってない。
git/bzr使おうかなぁとか思ったりもするけどmsysやらなんやら周辺のファイルの多さが気に入らない。
0064デフォルトの名無しさん
2009/09/29(火) 17:11:53例のおねーちゃんに乗っ取られてる
sampou.orgにあるから別にいいんだけど
なかのひとがどうしているのか気になる
0065デフォルトの名無しさん
2009/09/30(水) 21:37:25改行コードの自動変換をするらしい。
ttp://ghcmutterings.wordpress.com/2009/09/30/heads-up-what-you-need-to-know-about-unicode-io-in-ghc-6-12-1/
0066デフォルトの名無しさん
2009/10/04(日) 00:50:12ガベージコレクタがあって
8ビットCPUの時代Lispのインタープリタは4kbyteほどしかなかった気がする
Haskellのフロントはhaskellのカーネルに食わせるために単純な演算塊に展開してやると
で、Haskellの基本的部分はかなりコンパクトに実装できるのかな?と思った。
0067デフォルトの名無しさん
2009/10/04(日) 07:28:42> Haskell のカーネルって基本的にLispと同じだよね?
違う
0068デフォルトの名無しさん
2009/10/04(日) 14:35:490069デフォルトの名無しさん
2009/10/04(日) 18:57:28qsort[]=[]
qsort(x:xs)=qsort larger ++ [x]++ qsort smaller
where
smaller = [a|a<-xs,a <=x]
larger = [b|b<-xs,b>x]
What would be the effect of replacing <= by < in the definiton of qsort? Hint:consider the example qsort[2,2,3,1]
改変されたqsortをqsort'だと仮定する
qsort[2,2,3,1]=qsort [2,1] ++[2]++qsort [3]=(qsort[1]++[2]++qsort[])++[2]++(qsort[]++[3]++qsort[])
=((qsort[]++[1]++qsort[])++[2]++[])++[2]++([]++[3]++[])
=[]+[1]+[]+[2]+[]+[]+[2]+[]+[3]+[]=[1,2,2,3]
qsort'[2,2,3,1]=qsort [1] ++ [2] ++ qsort[3]=qsort[]++[1]++qsort[]++[2]++qsort[]++[3]++qsort[]
=[]++[1]++[]++[2]++[]++[3]++[]
つまり、同じ値が複数あるときは、ひとつを残して消えてしまう。
−−−−−−−−−
で、値が消えないんだけど文意を取り違えているのかどうなんだろう
消える様に改変しろなのかな?
smaller = [a|a<-xs,a <=x]をsmaller = [a|a<-xs,a <x]すると消えるけど
0070デフォルトの名無しさん
2009/10/04(日) 19:14:47「改変したらどうなるか?」ってのが問いで、「値が消える」が答え
What would be the effect of replacing <= by < in the definiton of qsort? Hint:consider the example qsort[2,2,3,1]
qsortの定義の中の<=を<に変えたとすると、何が起きるだろうか。ヒント qsort[2,2,3,1]という例で考えてみよ
0071デフォルトの名無しさん
2009/10/04(日) 19:15:16前者なら死ね。
後者ならどんだけ自分に自信がないんだ。君はできる子だよ。
0072デフォルトの名無しさん
2009/10/04(日) 19:17:46どう違うのか簡潔な説明が欲しいけど
”違う”の一言で終わりそうな感じなのであきらめます。
0073デフォルトの名無しさん
2009/10/04(日) 19:21:27インタープリタ込みの構造になってる。
そして動的型付け。
0074デフォルトの名無しさん
2009/10/04(日) 20:44:23それSchemeじゃない?Lispだと大抵コンパイラ込みで、宣言型型付けだろ。
0075デフォルトの名無しさん
2009/10/04(日) 21:23:36しかし、コンパイラでもマクロ展開を考えたら実質的にはインタプリタみたいなものは入ってなきゃだめだろう。
(CommonLisp でも Scheme でも。)
型については CommonLisp では型宣言できるけど、最適化のヒントでしかない。
型に応じて言語が何かしてくれるということはぜんぜん無い。
まぁ、「Lisp系」ってのは幅が広いので、ひとまとめで語るのが無茶だよ。
0076デフォルトの名無しさん
2009/10/04(日) 22:21:30型が宣言できるなら実装がなにかしてくれるかもしれないのでは?
007776
2009/10/04(日) 22:22:550078デフォルトの名無しさん
2009/10/05(月) 00:46:11Haskellをインタープリタだけ実装した場合lispに似てるのかな思ったので
言語仕様上は短精度、倍精度実数とか文字列とかあるけど
中身はリストさえclassとして実装している面白そうな物だなとか
a (n+1) = n で
a 1 を実行すると 0
a 2 を実行すると 1
a 0 を実行するとエラーになって思わず仰け反ったり、油断ならね〜
GHCのガベージコレクタは優秀とか言われているけどどうやっているのか興味が沸いたり
プログラムが関数の定義塊なのに、c系統のつもりで読んでパニック起こしたり
快感と言うかグッ来るものがある
0079デフォルトの名無しさん
2009/10/05(月) 00:50:570080デフォルトの名無しさん
2009/10/05(月) 01:04:25Yhcのソースでも読んで見りゃいいんじゃない?
http://www.haskell.org/haskellwiki/Yhc
0081デフォルトの名無しさん
2009/10/05(月) 06:18:40Haskellとの比較だから、コンパイラあるのは違う点に入らない。
実行時に型宣言ないlambda式生成できるので、
動的型付け必須で、データをunboxing出来ない。
0082デフォルトの名無しさん
2009/10/05(月) 08:43:130083デフォルトの名無しさん
2009/10/05(月) 09:34:34その型に応じた演算がされるから SBCL とか結構速い
0084デフォルトの名無しさん
2009/10/05(月) 19:18:360085デフォルトの名無しさん
2009/10/05(月) 21:44:42ps落としてきたんだけど、gvでエラーになっちゃう
0086デフォルトの名無しさん
2009/10/05(月) 21:55:43GhostScript を使って読むとか ps2pdf ってコマンドが同梱されているから pdf に変換するとかすればいいと思うよ
0087デフォルトの名無しさん
2009/10/05(月) 22:22:05d
0088デフォルトの名無しさん
2009/10/05(月) 22:51:24え、何で俺?
0089デフォルトの名無しさん
2009/10/06(火) 08:34:16強く強制されるから、コンパイラは、型的に正しいコードしか存在しないことを
仮定してコード生成ができる。
0090デフォルトの名無しさん
2009/10/06(火) 12:32:51オブジェクト指向プログラミングのSmalltalk
そして関数型プログラミングのHaskell
10年後くらいにはこんな感じの認識になってるんじゃないかと思う
0091デフォルトの名無しさん
2009/10/06(火) 12:33:480092デフォルトの名無しさん
2009/10/06(火) 13:08:140093デフォルトの名無しさん
2009/10/06(火) 13:38:26Lispは逆のアプローチじゃなかったかなあ
最適化に必要な型や仮定をプログラマが与える
コードが適切な振る舞いをすることは、型システムでなくてプログラマが保証する
0094デフォルトの名無しさん
2009/10/06(火) 19:48:530095デフォルトの名無しさん
2009/10/06(火) 20:19:230096デフォルトの名無しさん
2009/10/06(火) 21:02:300097デフォルトの名無しさん
2009/10/07(水) 00:39:22前は普通に/usr/local以下を管理してくれたと思ったが
0098デフォルトの名無しさん
2009/10/07(水) 16:26:460099デフォルトの名無しさん
2009/10/07(水) 19:47:44なんか前よりhaskellのランクが落ちてるような。他が良くなったのか。
0100デフォルトの名無しさん
2009/10/08(木) 08:17:56IronHaskellとかH#みたいな。
0101デフォルトの名無しさん
2009/10/08(木) 09:32:21http://php.cin.ufpe.br/~haskell/haskelldotnet/
■ このスレッドは過去ログ倉庫に格納されています