トップページtech
1001コメント330KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
Haskellの公式HP
http://www.haskell.org/
日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
Http://www.teu.ac.jp/kougi/koshida/Prog6/index.html

過去ログ、関連スレは>>2-5
0666デフォルトの名無しさん2005/07/19(火) 20:31:23
>>664
買っちゃった。
0667デフォルトの名無しさん2005/07/19(火) 20:43:25
>>666
でどうよ?

>>665
"Basic Category Theory for Computer Scientists (Foundations of Computing)"
「圏論の超基礎」つうのもある・・・
0668デフォルトの名無しさん2005/07/19(火) 20:47:40
"Categorical Logic and Type Theory (Studies in Logic and the Foundations of Mathematics)"
「論理&数学ラブ♥な人のための、カテゴリー・ロジックと型理論」
なんつう分厚い数学書も買うには買ったけど、これは完全に死蔵本だな、たぶん。
0669デフォルトの名無しさん2005/07/19(火) 20:49:10
ってな意味で、いきなり訳書を読めるアンタ(>>666)、
幸せ者だぞゴラァ!!!
0670デフォルトの名無しさん2005/07/19(火) 21:17:36
>>667
誤植が多いみたい。
0671デフォルトの名無しさん2005/07/19(火) 22:24:11
誤訳じゃなくて誤植ってのが泣けるね。
0672デフォルトの名無しさん2005/07/19(火) 23:39:47
「できる圏論」
0673デフォルトの名無しさん2005/07/19(火) 23:40:57
モノイダル圏とか分からない件
0674デフォルトの名無しさん2005/07/21(木) 16:22:11
http://www.sampou.org/haskell/tutorial-j/goodies.html
暇だからこれ読んでたんだが、ユーザ定義型のデータ構築子と型構築子の意味が分らん。
誰かなんかC,C++の似たような概念の用語で分りやすい説明キボンヌ。
0675デフォルトの名無しさん2005/07/21(木) 18:51:43
データ構築子 <=> classのコンストラクタ
型構築子 <=> template
0676デフォルトの名無しさん2005/07/21(木) 21:21:07
型構築子はtypedefでは?
0677デフォルトの名無しさん2005/07/21(木) 21:34:50
typedef は多相(総称?)型の定義ができんでしょ。
0678デフォルトの名無しさん2005/07/21(木) 23:42:00
CやC++でプリミティブと言われてる型は、Haskellでは全て列挙型
という見方をするの?

data Int = -65332 | ... | -1 | 0 | 1 | ... | 65332
という例が載ってるけど、こんな感じに、
新たに型を作る。作られる型がデータ構築子
そのときに型のデータのインスタンスを列挙する。列挙されるのがデータ構築子。

こんな感じでいいのかな?頭悪くてすいませんねw
0679デフォルトの名無しさん2005/07/21(木) 23:43:28
×新たに型を作る。作られる型がデータ構築子
○新たに型を作る。作られる型が型構築子
0680デフォルトの名無しさん2005/07/21(木) 23:52:20
しかし新たに型を定義する式のためのキーワードがdataで、
Cのtypedef風なものにtypeが使われてるのはなんかちょっと違和感あるというか。
typeはいいとして、なんでdataなの?
0681デフォルトの名無しさん2005/07/22(金) 00:54:47
>>680
データ型宣言だから、では駄目かい?
0682デフォルトの名無しさん2005/07/22(金) 08:43:46
>>681
厨房臭いんですが、dataってのは納得できないですね。
それはまあいいとして、このスレはちょっとレベルが違いすぎるので、
初心者はこっちで質問することにしました。どうもです。

関数型言語Part IV
http://pc8.2ch.net/test/read.cgi/tech/1083649982/
0683デフォルトの名無しさん2005/07/22(金) 08:52:28
言語に特有の質問なんだから、このスレのほうがいいんじゃないか?
0684デフォルトの名無しさん2005/07/22(金) 13:15:03
SMLはtype synonym宣言に'type'、データ型宣言に'datatype'を使う。
Haskellはそいつを参考にしたが、'datatype'は長いので'data'にした。
というのも考えられるかも。
0685デフォルトの名無しさん2005/07/22(金) 13:45:51
OCamlなら全部typeで済ませられるぞ(逆に言うと宣言の見掛け上区別できない)。
0686デフォルトの名無しさん2005/07/27(水) 20:28:46
Peyton Jonesの本が面白すぎて夜も眠れません。
0687デフォルトの名無しさん2005/07/28(木) 01:59:51
HaskellからCleanに宗派変えてみる。
0688デフォルトの名無しさん2005/08/13(土) 00:17:46
ここでは、こういうネタはスレ違い?
http://www.geocities.jp/takascience/windows/monadius.html

本家からもリンクされてる。
Monadius
A shoot 'em up game using OpenGL. Takayuki Muranushi also wrote a couple of other games in Haskell.
http://www.haskell.org/practice.html
0689デフォルトの名無しさん2005/08/26(金) 17:04:35
_|_って何から来てるんですか?
数学?
0690デフォルトの名無しさん2005/08/26(金) 18:12:56
>>689
うん
0691デフォルトの名無しさん2005/08/26(金) 20:28:34
どの分野か教えてもらえますか?これも圏論?
0692デフォルトの名無しさん2005/09/06(火) 17:46:57
越田先生@東京工科大のレジュメ http://www.teu.ac.jp/kougi/koshida/Prog6/

ってのは、今はどこで見れるの?
0693デフォルトの名無しさん2005/09/06(火) 18:33:49
http://www.teu.ac.jp/10/002921.html
もう読めないのかも。Internet archiveにはあるか?
0694デフォルトの名無しさん2005/09/06(火) 19:48:40
>>693
亡くなられたのか……まだ若いのに。

プログラム工学VI 授業関連資料
http://web.archive.org/web/20031014180912/http://www.teu.ac.jp/kougi/koshida/Prog6/index.html
0695デフォルトの名無しさん2005/09/07(水) 00:28:33
>>693
うへー、マジカヨ。
ご冥福をお祈りいたします。
0696デフォルトの名無しさん2005/09/07(水) 00:32:24
貴重な(ry
0697デフォルトの名無しさん2005/09/07(水) 01:58:27
この人のチュートリアルをどこかにページにそのままうpしたらまずいのかな?
需要はかなりあると思うのだが。
0698デフォルトの名無しさん2005/09/07(水) 14:24:35
それより誰かが成書に仕上げて印税が遺族に行くようにできるとよいな。
0699デフォルトの名無しさん2005/09/07(水) 19:19:39
おいおい越田先生、死んだのかよ。面識なんてもちろんないけど
チュートリアル何度も読んでたから、泣けてくるじゃネーか
合掌(-人-)
0700デフォルトの名無しさん2005/09/13(火) 02:08:53
>>693
ひさしぶりに覗いたら悲しい知らせが。
南無。 そしてありがとう。
0701デフォルトの名無しさん2005/09/15(木) 09:54:51
http://mono.kmc.gr.jp/~oxy/hiki.cgi?rtype
0702デフォルトの名無しさん2005/09/16(金) 03:51:24
Ruby 2.0 勝手に実装してくれよ
0703デフォルトの名無しさん2005/09/16(金) 04:46:06
実装できるほどの仕様が決っていないのでは?
0704デフォルトの名無しさん2005/09/19(月) 17:14:40
ここでPugsの話題が出ないのが謎
本家よりずっと先にリリースって、すげーと思わない?
0705デフォルトの名無しさん2005/09/21(水) 02:03:18
すげー過疎

とりあえずVersion 6.4.1リリースage
0706デフォルトの名無しさん2005/09/24(土) 00:34:03
引数のパターンマッチング
guard
if-then-else
case-of

って基本的には同じですか?
0707デフォルトの名無しさん2005/09/24(土) 01:44:59
引数のパターンマッチングと case-of はほとんど同じと考えてよい。
if とパターンマッチは違う。

パターンマッチには真理値で条件を与えることができる。これはガード部とか
言われる。 guard がそのことを指して書いたのであれば、 if と似ていると
は言えるかもしれない。

guard 関数はぜんぜんまったく関係ない。
0708デフォルトの名無しさん2005/09/24(土) 11:29:13
if b then t else f

case b of {
  True -> t;
  False -> f;
}
の省略記法。この意味では同じといえると思う。
0709デフォルトの名無しさん2005/09/24(土) 16:38:46
その4つは束縛変数を導入できるかという点で区別することもできるね。
0710デフォルトの名無しさん2005/09/24(土) 19:55:50
ここにいる奴って、普段何してるんだよ

haskellでオナニーできてるか?
0711デフォルトの名無しさん2005/09/24(土) 21:19:20
昨日STGで2回…
0712デフォルトの名無しさん2005/09/24(土) 23:20:51
monadタソ(;´Д`)ハァハァ
0713デフォルトの名無しさん2005/09/26(月) 18:07:59
★〜彼方の願い星〜★
このレスを見た人は、超ラッキーな人♪
でも、このレスを見ただけじゃ何も起らないよ。
効果を実感したいなら、このレスを5回違うスレにレスしてね♪
だぁい好きなあの人に告られたり、
成績がどんどん良くな★〜彼方の願い星〜★
このレスを見た人は、超ラッキーな人♪
でも、このレスを見ただけじゃ何も起らないよ。
効果を実感したいなら、このレスを5回違うスレにレスしてね♪
だぁい好きなあの人に告られたり、
成績がどんどん良くなって、先生に褒められちゃったり...。
次々とHAPPYな事が訪れます♪
此の頃変なのがいっぱい回★〜彼方の願い星〜★
このレスを見た人は、超ラッキーな人♪
でも、このレスを見ただけじゃ何も起らないよ。
効果を実感したいなら、このレスを5回違うスレにレスしてね♪
だぁい好きなあの人に告られたり、
成績がどんどん良くなって、先生に褒められちゃったり...。
次々とHAPPYな事が訪れます♪
此の頃変なのがいっぱい回っ★〜彼方の願い星〜★
このレスを見た人は、超ラッキーな人♪
でも、このレスを見ただけじゃ何も起らないよ。
効果を実感したいなら、このレスを5回違うスレにレスしてね♪

これが本物の、初代HAPPYメールです♪ってますが、これは本当です!!
これが本物の、初代HAPPYメールです♪って、先生に褒められちゃったり...。
次々とHAPPYな事が訪れます♪
此の頃変なのがいっぱい回ってますが、これは本当です!!
これが本物の、初代HAPPYメールです♪
0714デフォルトの名無しさん2005/09/28(水) 23:39:39
Emacsのハスケルモ〜ドって使いにくくないですか?
特にインデントが何回も叩かないと希望の位置にこない。
0715デフォルトの名無しさん2005/09/29(木) 00:00:52
haskell-mode、出来はすごく良いと思うけど。
インデントはすくなくとも手で揃えるより楽だし、ローテートしてくれるのは良いよ。
関数定義も補完してくれるし。
ただcase 〜 of のインデント位置のポリシーだけは気にいらないな。あれは of の前で改行することを想定しているのだろうか。
0716デフォルトの名無しさん2005/09/29(木) 00:29:05
そうですか。もうちょっと頑張って使い込んでみます。
あと、M-x turn-on-haskell-hugs して C-c C-l するとEmacsが固まって
C-g打つまで帰ってこなくなるんですが、何か設定が必要なのでしょうか?
Hugs.Base>
というプロンプトで一回 :load して、プロンプトが
Main>
になった後はすんなり動くんですが。

Emacsのバージョンは21.3です。
0717デフォルトの名無しさん2005/09/29(木) 01:20:23
Haskell-modeは優秀だと思う。
0718デフォルトの名無しさん2005/09/29(木) 01:40:00
>716
そういう症状は体験したことがないなあ。自分はおおむね
http://www.haskell.org/haskell-mode/installation-guide.html
のように設定している。
でも最近はもっぱら ghci で hugs を使ってませんねぇ。
0719デフォルトの名無しさん2005/09/29(木) 12:16:49
716ですが原因を特定しました。

私の環境ではhugsを起動した直後のプロンプトは
Hugs.Base>
なのですが、huskell-hugs-start-processでcomint-prompt-regexpに設定する
パターンが"^\? \\|^[A-Z][_a-zA-Z0-9]*> "となっていて
ドットを含まないためのようです。これを修正すると問題は解消しました。
(せめてdefvarしていて欲しかった……)

hugsもhaskell-mode.elもFreeBSDのportsで入れたのですが、みなさんの
hugsではプロンプトは別の文字列なのでしょうか?
0720デフォルトの名無しさん2005/09/29(木) 20:46:48
>719
少し前(200311_1)には
Prelude>
だったが、今は確かに
Hugs.Base>
になってるね。
0721デフォルトの名無しさん2005/09/29(木) 22:28:13
Haskell 使おうっと思ってんだけど、サンプルプログラムがなきゃ分からん。

いきなり Pugs, Rtype, Monadius だと手ごわすぎるので、もうちょい下のレベルで、
おすすめを教えて頂戴。

ウェブアプリを作ることがほとんどなので、Wiki, Blog(Diary), BBS 辺りが理想なんだけど。
0722デフォルトの名無しさん2005/09/29(木) 22:57:36
>>721
俺は特に何かをお薦めする程わかっちゃいないが、取り合えず
http://www.haskell.org/practice.html
を紹介しとく。
0723デフォルトの名無しさん2005/09/29(木) 23:04:55
>>722
さんきゅ。

とりあえず、

Flippi: a Wiki clone written in Haskell
http://www.flippac.org/projects/flippi/

でも見てみるよ。
0724デフォルトの名無しさん2005/09/30(金) 11:39:06
「連載: Haskellプログラミング」のメモ化のところがよーわからん。
State s t、withState、bindStateのところで詰まってしまった。
誰か日本語でわかりやすく説明して!
0725デフォルトの名無しさん2005/09/30(金) 17:42:10
Stateモナドの知識がないと難解だと思う。

type State s t = s -> (t, s)
というのは、現在の状態を受け取って新しい状態とさらに何かを返す関数。
だから、State s t型の値を「状態を変更してついでに値を生み出す仕掛け」と見ることができる。
ここで、「状態を変更せずに常に決められた値xを生み出す仕掛け」は

\state -> (x, state)

と書ける。これがwithState x。
一方、「起動されたとき仕掛けxと仕掛けyが順に起動されたかのように振る舞う仕掛けthenState x y」は
次のように定義できる。

thenState :: State s a -> State s b -> State s b
thenState x y = \s0 ->
  let (_, s1) = x s0 in -- xに初期状態s0を与えて起動、中間状態s1を得る。xによって生成された値は無視。
  y s1 -- yに中間状態s1を与えて起動、終状態と値の組を得る。これはそのまま合成されたしかけの戻り値となる。

thenStateではxによって生成された値を無視したが、この値に基づいて
次に何をするか決めることができないと面白くない。そこで、yとして単なる仕掛けではなく、
「xによって生成された値を受け取って仕掛けを返す関数」を渡すことにする。

bindState :: State s a -> (a -> State s b) -> State s b
bindState x y = \s0 ->
  let (result, s1) = x s0 in -- xを起動し…
  (y result) s1 -- …次に(y result)を起動
0726デフォルトの名無しさん2005/09/30(金) 22:49:12
すごくわかりやすい! あなたとても賢いね。
どうもありがとうございました。

State s t を状態遷移図での状態aから状態bへの矢印とイメージしました。
withState x は、状態遷移図で状態aから同じ状態aへ戻る矢印(出力x)ですね。
0727デフォルトの名無しさん2005/10/01(土) 11:13:33
Haskell はなかなか自分の思い通りにかけるようにならない orz
0728デフォルトの名無しさん2005/10/01(土) 14:23:21
Cとかと違ってプログラマのほうに能力がないと何もできんよな……
0729デフォルトの名無しさん2005/10/01(土) 20:48:54
Haskellで書くとバグがなくなると聞いたんですが本当ですか?
0730デフォルトの名無しさん2005/10/01(土) 22:48:41
バグは出にくいが慣れないうちは普通にコンパイルを通すだけで苦労する。
0731デフォルトの名無しさん2005/10/01(土) 23:21:49
>>729
俺も最初はランタイムエラーは絶対出ないものと思ってたけど
guardとかの場合わけ漏れとか
パターンマッチの不整合エラーがたまにある、、、

ぬるぽとかと比べて感覚的に頻度少ないけどね。
0732デフォルトの名無しさん2005/10/01(土) 23:59:39
>>729
いいえ
0733デフォルトの名無しさん2005/10/02(日) 00:42:37
整数をゼロで割ると実行時エラーになるし。

完全でないパターンマッチは、ghcなら警告を出させることもできるから、
あとはプログラマの問題という気がするが。
07347242005/10/02(日) 05:03:11
「連載: Haskellプログラミング」の9月号分を読んで
なんとなく理解したところでは
Haskellで評価の順序を強制するためにはCPSのように書くことが必要で、
Monadは継続に付加情報を(連続的にというか玉突き的にというか)持ち回る道具、
do構文はそれを手続き型のように書く構文、
というところだろうか?
0735デフォルトの名無しさん2005/10/02(日) 08:35:39
Monadは全てを記号論的に処理する枠組み
doは状態遷移を隠蔽するモナド関数
で合ってる?
0736デフォルトの名無しさん2005/10/02(日) 09:44:07
>>734
Stateモナドについてならその理解でいいと思う。
ただし、モナドの意味論は個々のモナドでかわる。モナドそのものは
「do記法で書くことのできるひとまとまりの計算の構成を支援するもの」くらいではないかな。
たとえばIOモナドは副作用が存在しうるような場合の計算の順序の保証する。
Maybeモナドは途中でNothingになるかもしれない計算のまとまりを構成する。
などなど。

あとは「モナドのすべて」を読むといいと思うよ。
http://www.sampou.org/haskell/a-a-monads/html/index.html
0737デフォルトの名無しさん2005/10/03(月) 20:52:08
      /\
    /   \  今このとき,モナドは立ち上がる
   /∧_∧ \    
 /( ´∀`)  /\
 \(    ) /  \    
   \    /       \
    \/         \
          ∧∧∧∧\
         (  ´/) ))ヽ∧
         /   /  / ´∀) ∧∧
       ○(   イ○  (   ,つ, ,゚Д゚)  
       /ヽ  )) ヽ  )ヽ )と  , イ
       (_/(_/(_/(_/ノ(_/⊂ノ> )J
   / ̄Y ̄`|/ ̄^Y ̄ヽ/ ̄ ̄Y
0738デフォルトの名無しさん2005/11/01(火) 01:17:46
純粋関数型言語を業務で使ってみたい。
0739デフォルトの名無しさん2005/11/01(火) 01:23:35
ぜひ使ってくれ
0740デフォルトの名無しさん2005/11/02(水) 01:11:11
あなたの業務が研究・教育ならいくらでも…
0741デフォルトの名無しさん2005/11/03(木) 10:35:10
hasktags って使える?
誰か、 GHCmacs でも作ってくえ。
0742デフォルトの名無しさん2005/11/12(土) 10:24:33
行列をhaskellで実装する場合、単位元ってモナドで表現する?
0743デフォルトの名無しさん2005/11/12(土) 19:00:45
連載 Hakellプログラミングの8月号にのってる
両替問題の最初でつまづいてしまいました。

cc ::Amount -> [Coin] -> Count
という関数を
a < 0でないとき
cc a (c:cs) = cc (a-c) (c:cs) + cc a cs
と定義してますが、なぜこれで指定した金額aの両替の組み合わせ個数になるんですか?

初歩的な質問で済みませんが教えてください。
0744デフォルトの名無しさん2005/11/12(土) 19:11:23
>>743
貨幣cを一つ以上使う場合の数は、cを一つ使った後の両替を考えて、cc (a-c) (c:cs)
貨幣cを一つも使わない場合の数は、cc a cs
この和が求めるものになる。
0745デフォルトの名無しさん2005/11/12(土) 19:30:54
>>744
なるほど。
うまく考えるものですね。
ありがとうございました。
0746デフォルトの名無しさん2005/11/12(土) 20:31:08
簡単な例を作るといいよ
10円 を 5円 と 1円 で両替して樹形図を書く
0747デフォルトの名無しさん2005/11/12(土) 21:27:57
高校でやったろ? 順列と組み合わせ。
0748デフォルトの名無しさん2005/11/12(土) 21:38:52
>>747
お前がいまやってるんだろ?ww
0749デフォルトの名無しさん2005/11/13(日) 02:16:56
母関数を使えば簡単に計算できるのに
0750デフォルトの名無しさん2005/11/13(日) 09:14:43
>>748
今頃やってるとしたら遅すぎると思うんだが。
夏頃やってたような。昔の記憶だが。
0751デフォルトの名無しさん2005/11/13(日) 22:17:02
>>749
母関数から特定の項を取り出す手間とボトムアップに解を構成する手間はいっしょ
0752デフォルトの名無しさん2005/11/14(月) 06:49:45
>>751
母関数から特定の項を取り出すのは紙と鉛筆で簡単にできるでしょ。
わざわざプログラムなんて書く必要もない。
0753デフォルトの名無しさん2005/11/14(月) 20:09:53
>>752
詳しく頼む。

俺は Polya の本にその母関数の一般項の計算には DP を使うと書いてあったので、無理だと思ってたんだが。
0754デフォルトの名無しさん2005/11/14(月) 23:45:35
>>753
組み合わせ論の入門書やConcrete Mathに出てるようなんじゃだめなの?
07557522005/11/15(火) 00:16:35
>>754
Concrete Math の p.331 から 2 ページくらいで計算されてるやつ?

この例の最初のところに「一般の効果の場合に計算するのはとても難しい」とあるし,
その下で計算されてる {1, 5, 10, 25, 50} の特殊例においても「trick」と称される
計算をしないといけないし,さらに,最終結果に残ってる A_k は多項式を実際に展開しないと求まらない.

というわけで,これは一般性が無いという意味で >>744 が母函数から簡単に出るという
説明にはなってないし,特殊例を含めても >>752 の「簡単」ってのはどうかと思う.


コレじゃないならポインタください.
0756デフォルトの名無しさん2005/11/15(火) 21:19:55
Haskellのデータ構築子が非正格なのは便利なんだけど、
一般の関数が非正格で嬉しいことってある?
デフォルトで正格でも良いような気がするんだが。
0757デフォルトの名無しさん2005/11/15(火) 21:44:13
以下の二つが大きいそうだ
・相等性についての議論が楽になる(単純に置換するだけでOK).
・制御構造を自分で設計できる.
 cond p x y | p         = x
            | otherwise = y           
 recip x = cond (x == 0) 0 (1/x)
 は正格なら recip 0 = bot, 非正格なら recip 0 = 0.
0758デフォルトの名無しさん2005/11/15(火) 22:37:48
>>757
反応ありがとう。

>・相等性についての議論が楽になる(単純に置換するだけでOK).
なるほど。気付かなかった。
でも、現状だとIntのaccumulator引数付きのちょっとした末尾再帰関数なんかを書くたびに
明示的に正格評価を指定しないとパフォーマンスに打撃があるわけで、
「議論が楽になる」って利点はこのコストに見合うんだろうか。

…などと思うのは俺が言語を使うだけの立場だからかな。

>・制御構造を自分で設計できる.
これはどちらかというと特殊なケースだから、非正格をデフォルトにする理由としては弱いと思う。
0759デフォルトの名無しさん2005/11/15(火) 22:56:10
もともとは研究者の研究者による研究者のための言語だから、
コストパフォーマンスより性質を重視してるんじゃない?
ていうか、非正格の言語を統一する目的で作られた言語だしね。

正格がデフォルトの言語はMLを始めすでにいっぱいあるから
そっちを使ったらどうかな。
07607572005/11/15(火) 23:37:37
>>758
俺は前者も後者も重要と思ってるんだけどね。まあとりあえず前者について少し強く推しておく。

「three x = 3 」 と定義したときに、「 2 + three x == 5 」 が成立するかどうかを判定することを考える。
これを非正格に評価するとthree x を単純に 3 に置き換えて 2 + 3 == 5 にして、成立する、と結論が出るんだけど、
正格評価だと、x が絶対 bot にならないなら成立、そうでないなら不成立、というようにドメインまで考えないと駄目になる。

特に函数が複雑に組み合わさってる場合に、どこかで bot になる可能性があるとかそういうことを考えるのはしんどいし、
上の函数でもそうだけど、 bot 以外で成立、とかいうのは本質的に成立にしちゃったほうが有意なケースが多いんだわ。
0761デフォルトの名無しさん2005/11/16(水) 00:02:49
相等性?(0.6 + 0.000000000000000041) == 0.6
浮動小数は代数的ではないとはいえ、言語的にこれでいいでしょうか?

0762デフォルトの名無しさん2005/11/16(水) 11:02:44
>>756
バックトラックが、普通に全数探索するようなコードを書くだけで実装できてしまうとことか。
0763デフォルトの名無しさん2005/11/18(金) 20:07:17
どうでもいいこと。

>>757
>  recip x = cond (x == 0) 0 (1/x)

(x == 0) ? 0 : (1/x)

ちゃんとしたコンパイラなら動くきがす。
0764デフォルトの名無しさん2005/11/19(土) 22:59:06
え、だから?
煽りじゃなく本気で意味がわからん。
0765デフォルトの名無しさん2005/11/20(日) 16:33:55
Hugs.Base> let n C r = product [n-r+1..n] `div` product [1..r] in 5 C 3
10
■ このスレッドは過去ログ倉庫に格納されています