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


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

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



1 名前:デフォルトの名無しさん [04/02/10 22:16]
Haskellの公式HP
www.haskell.org/
日本語サイト
www.sampou.org/cgi-bin/haskell.cgi
www.teu.ac.jp/kougi/koshida/Prog6/index.html

過去ログ、関連スレは>>2-5

528 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 23:02:55 ]
FP ってなんですか?

529 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 00:06:54 ]
一時期流行った自分視点のゲームだろ

530 名前:デフォルトの名無しさん mailto:sageネタをネタと(ry [2005/04/24(日) 13:13:48 ]
そりゃFPSだ。

動的計画法のことだろ?

531 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 18:54:43 ]
Functional Programmingのことかと思った。

532 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 21:37:20 ]
> 動的計画法のことだろ?
それはDP(dynamic programming)

533 名前:デフォルトの名無しさん mailto:sage [2005/04/24(日) 23:26:26 ]
わかりにくいネタでごめん

534 名前:デフォルトの名無しさん mailto:sage [2005/04/25(月) 20:31:20 ]
まじでどこで連載してるのか教えてくれ

535 名前:デフォルトの名無しさん mailto:sage [2005/04/25(月) 20:56:53 ]
情報処理学会誌ですね。
久しぶりにビニールを開けてみました。
相変わらず読むところが少ない…。

536 名前:デフォルトの名無しさん mailto:sage [2005/04/27(水) 11:28:18 ]
辛ければヨーグルトを使う



537 名前:デフォルトの名無しさん [2005/04/29(金) 15:38:56 ]
GHCがpanicっていってコンパイル止まったよ。
間違ったソースの中には対応しきれないものがあるようだ。

538 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 16:42:43 ]
>>537
嘘はいけない。ghcにバグはない。

539 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 16:49:25 ]
ghc のバグじゃなくてコンパイルするソース側の

540 名前:デフォルトの名無しさん [2005/04/29(金) 16:57:37 ]
>嘘はいけない。ghcにバグはない。

なんか凄い事聞いた気がする。
ほんと?

541 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 18:00:14 ]
ほんとにそうならghcのwebにバグレポートのリンクがあったりしないべ。


542 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 18:49:30 ]
Financial Planner

543 名前:537 [2005/04/29(金) 21:25:14 ]
ほんとだよ。GHC cannot process input file. please report this to us とか出たもの。
もちろんソースは正しくないやつなんだが、それでもコンパイラが適切なエラーメッセージを
出せずに止まったことは事実。

544 名前:デフォルトの名無しさん mailto:sage [2005/04/29(金) 22:13:13 ]
ああ、拡張機能や新機能を使うと稀に起こるよ、panic。
ちゃんと報告してあげて下さい。

545 名前:デフォルトの名無しさん mailto:sage [2005/04/30(土) 18:45:06 ]
例のHaskell連載って公開してるんだね
www.ipsj.or.jp/07editj/promenade/

546 名前:デフォルトの名無しさん [2005/04/30(土) 19:44:34 ]
ハスケル!ハスケル!



547 名前:デフォルトの名無しさん mailto:sage [2005/04/30(土) 21:27:04 ]
    _  ∩
  ( ゚∀゚)彡
  (  ⊂彡
   |   | 
   し ⌒J

548 名前:デフォルトの名無しさん [2005/05/01(日) 20:14:08 ]
LISP Macro みたいなことできますか?
-- dotimes :: n -> (n -> IO()) -> IO()
dotimes n f = __dotimes 0
where __dotimes i | i >= n = return ()
| otherwise = do (f i)
__dotimes (i + 1)
-- dotimes 10 ( \x -> putStr (show x))
こんなもの?

549 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:02:28 ]
遅延評価だし、アクションが第一級の対象だから、
全ての関数がマクロであるようなものじゃないか?

550 名前:549 mailto:sage [2005/05/01(日) 23:05:09 ]
なんかピントの外れたことを言ったな。
誰かフォローよろしく。

551 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:19:07 ]
dotimes' n f = sequence_ [ f n' | n' <- [0..n-1] ]
main = dotimes' 10 (putStr.show)


552 名前:無理です。 mailto:sage [2005/05/01(日) 23:20:58 ]
例えばhaskellのif

if p then c else a
は、

case p of
 True -> c
 False -> a

の構文糖衣とみなせる。逆でもよい。
マクロの代わりになるかどうかは、自分のifをcaseで定義できるかどうかを
考えてみればわかる。

myif

mycase

さあどうぞ。


553 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:29:12 ]
myif :: Bool -> a -> a -> a
myif p c a = case p of True -> c; False -> a

でいいんじゃないのか?

554 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:37:45 ]
>>553
thenとかelseはどこいった?

555 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:43:22 ]
シンタックスを定義できなてもマクロと言えると思うが。

556 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:49:16 ]
↑それで消費者が納得すると思ってんのか?



557 名前:デフォルトの名無しさん mailto:sage [2005/05/01(日) 23:52:37 ]
>>555
関数マクロと言うべきか。


>>548の回答としては、

Q.LISP Macro みたいなことできますか?
A.できません。


558 名前:デフォルトの名無しさん mailto:sage [2005/05/02(月) 00:05:54 ]
haskellでは
a `lambda` (a + 1)
の様な表現ができないのが本質的っぽいね。

559 名前:デフォルトの名無しさん mailto:sage [2005/05/02(月) 00:11:04 ]
つまり、遅延であろうがなかろうが、LISPのようなマクロを書けるかどうかは
引数評価を自分でコントロールできるかどうかにある。
少なくともLISPのマクロ内に出てくるシンボルみたく、引数の一部を
評価せずにキーワードそのものとして扱うみたいな仕組みがないと。

560 名前:デフォルトの名無しさん mailto:sage [2005/05/02(月) 00:25:50 ]
「遅延評価」の意味で「評価」と言うと意味が違うと思う。
引数の評価をコントロールするだけならhaskellでもできる。
「解釈」と言えばいいのかな?

561 名前:デフォルトの名無しさん mailto:sage [2005/05/02(月) 00:39:06 ]
LISPのマクロはdefineを含むコードを生成できるけど、Haskellではそのような真似はできないはず。


562 名前:デフォルトの名無しさん mailto:sage [2005/05/02(月) 13:13:17 ]
HaXmlで下のinputからoutputのような出力を得たいんですがどのようにすれば
良いでしょうか?

---input---
<function name='deleteBy' type='(a -> a -> Bool) -> a -> [a] -> [a]'>
<description>
similar to <f>delete</f>, but it allows the programmers to supply
their own equality test
</description>

---output---
["deleteBy", "similar to delete, but it allows the programmers to supply
their own equality test"]


<description>の中の<f>の処理がうまく行かず下のような結果になってしまい
ます。<description>の中のテキスト部分だけを抜き出したいです。別リスト
にしないで1つの文字列として。

["deleteBy", "similar to ", "delete", ", but it allows the programmers to supply
their own equality test"]


563 名前:562 mailto:sage [2005/05/02(月) 13:22:01 ]
コードとサンプルデータを載せます。

import System.IO
import System.Environment
import Text.XML.HaXml
import Text.XML.HaXml.Pretty (content)

main :: IO ()
main =
do ~[arg] <- getArgs
h <- openFile arg ReadMode
str <- hGetContents h
case xmlParse "list.xml" str of
(Document _ _ (Elem _ _ contents))
-> mapM_ print $ map getCont contents

getCont = map content . contFilter

contFilter :: CFilter
contFilter = f `o` (tag "function")

f = cat [ ("name"?) , multi txt `o` (keep /> tag "description") ]


564 名前:562 mailto:sage [2005/05/02(月) 13:22:59 ]
<module name="List">

<function name='deleteBy' type='(a -> a -> Bool) -> a -> [a] -> [a]'>
<description>
similar to <f>delete</f>, but it allows the programmers to supply their own equality test
</description>
<example>
<in>deleteBy (\x y -> y `mod` x == 0) 4 [6,8,10,12]</in>
<out>[6,10,12]</out>
</example>
</function>

</module>


565 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 14:30:17 ]
今月の文章は先月の和田先生のよりわかりにくいなあ。
例題をどう解くかの説明が全くなくて、説明もHaskellの説明にはなってるけど
例題のプログラムの説明としてはかなり端折られてるのが原因かな。




566 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 22:34:11 ]
バイナリファイルを弄りたいんですけど
Haskellでビット演算の関数とか演算子とか
あれば教えてください。



567 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:38:07 ]
:browse Bits

568 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 22:14:20 ]
>>567
ありがとうっす

569 名前:デフォルトの名無しさん [2005/05/20(金) 23:02:42 ]
モナドって全然わかない

570 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 23:16:00 ]
↑日本語もわかない人

571 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:33:08 ]
最近自分は悟った。

モノイドとか圏論とかの背景思想を無視して
使う立場だけからいうと
モナドは数珠繋ぎ強制ギプスみたいなものだと。

(IO Char)とか(IO Int)とかの型は
CharやIntの値がくるまれたカプセルみたいなもんだ。
ちなみにIO ()の()はCでいうvoid型
return xx とやると普通の値もIOモナドで包むことができる。

572 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:33:49 ]
ただしIOモナドは一度くるんだら中身を取り出す方法がない。
IO型の関数を普通の関数と組み合わせても型違いで
コンパイルエラーになる。
(IO ()ももちろん型違いでエラー)

そこでモナドの中身の値を
橋渡しするアダプタ(>>=)を使う。

結局>>=や>>で(IO xxx)型の関数同士やreturn xxで
数珠繋ぎにするしかないように強制される。

573 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:42:17 ]
そいつは面倒だあ

574 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:43:08 ]
IOモナドってGPLみたいだなとか思った。

575 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:48:49 ]
数珠つなぎのしくみや値を包みこむ性質を利用して
他にもいろいろなモナドがあるし自分でも作れる(かもしれない)

Stateモナドは数珠繋ぎを利用して
IOモナドみたいな状態遷移を自分で作れる。

Maybeモナドは値を包むほうが主眼のモナド
実際の値の代わりにNothingというダミーを
突っ込んでおくことができる。
データベースのNULL値みたいに使える。

576 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:57:53 ]
モナドと聞くと王監督の顔が思い浮かぶのは何故?



577 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:24:06 ]
>>571
>CharやIntの値がくるまれたカプセルみたいなもんだ。
俺にはこの表現がなじまない。
カプセルってのは中身が取り出せてこそのものだよな。
だから、「CharやIntにに関係する何か」くらいの認識しかできない。

578 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:13:59 ]
自分でIO型の関数作れば
前のIO関数から>>=で渡された
中身の生の値をちゃんと自由に扱える。

「取り出す方法が無い」んじゃなくて
「>>=を使って(間接的に)取り出すしか方法が無い」が
正しいかも。

579 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:15:56 ]
monadic I/Oの意味論を破壊して喜ぶって、マゾですか?

580 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:16:44 ]
そーゆーのには、
C言語とアセンブラがお勧め(w


581 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:30:25 ]
>576
ワロス
俺も思いついた

582 名前:デフォルトの名無しさん [2005/05/21(土) 16:33:47 ]
もな〜ももなど?

583 名前:デフォルトの名無しさん [2005/05/21(土) 20:30:44 ]
>>549
そのとおりだよね。

584 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 20:44:49 ]
>>583
だからー、
その件はLISPマクロのようには書けないって話だろーが

585 名前:デフォルトの名無しさん [2005/05/21(土) 21:04:10 ]
>>559
名前渡し?遅延評価ってそういうことなのでは?

586 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 21:12:59 ]
名前をキーワードとして扱う?CLtL4の仕様ですか?w



587 名前:566 mailto:sage [2005/05/21(土) 21:23:20 ]
某バイナリファイルのヘッダ構造体の読み込み関数が
だいたい目処がたってきますた。

ところでdata宣言で作った構造体?にたいする
Javaのシリアライズみたいな仕組みやライブラリって
Haskellにはないんすかね?
リフレクションみたいな仕組みがないと無理?

ファイルフォーマットをリストで与えて結果もリストで返すみたいなのは
できそうだけどそれじゃせっかくの強力な型システムが活かせないような、、

588 名前:デフォルトの名無しさん [2005/05/21(土) 21:25:51 ]
>>585
あ、違うか
名前渡してないもんね
普通の意味の値の他に名前も値にできるようでないと圏論的には不完全なようなキガス

589 名前:デフォルトの名無しさん [2005/05/21(土) 21:28:21 ]
とゆーことは変数のポインタでいいのかどうか

590 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 21:39:32 ]
>圏論的には不完全

というと?

591 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 16:51:02 ]
ちょっと質問です。

二項関係 r の反射的・対称的・推移的閉包に (x,y) が属するかどうかを判定する関数
inEqvCl ってのを書いてみたんですけど、もうちょっとすっきりした書き方とかないでしょうか?

inEqvCl :: Eq a => (a,a) -> [(a,a)] -> Bool
inEqvCl _ [] = False
inEqvCl (x,y) s = chk s y x
 where
  chk lst v u | v == u = True
        | v `elem` ux = True
        | otherwise = or $ map (chk lst' v) ux
   where
    lst' = [ p | p <- lst, u /= fst p, u /= snd p ]
    ux = do p <- lst
        if u == fst p && u /= snd p
          then return $ snd p
          else if u == snd p && u /= fst p
            then return $ fst p
            else fail ""

実行例
(2,1) `inEqvCl` [(0,2),(3,4),(5,4),(1,5),(5,0),(6,7),(8,7)]
=> True
(1,6) `inEqvCl` [(0,2),(3,4),(5,4),(1,5),(5,0),(6,7),(8,7)]
=> False


592 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 21:57:54 ]
>>591
こんなのでどうかな。
題意を理解していないので間違ってたらスマソ
import List

inEqvCl :: Eq a => (a, a) -> [(a, a)] -> Bool
inEqvCl _ [] = False
inEqvCl (x, y) s
  | x == y = True
  | y `elem` ns = True
  | otherwise = any con ns
  where
    ns = map snd $ filter ((==x) . fst)  exts
    exts = s ++ map (uncurry $ flip (,)) s
    con n = inEqvCl (n, y) (s\\[(x, n), (n, x)])

593 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:23:13 ]
面白そうなのでオレもやってみた。

-- 同値類のリストを算出
classify :: Eq a => (a, a) -> [[a]] -> [[a]]
classify (x, y) [] = [[x, y]]
classify (x, y) (c : cs)
| x `elem` c = (y : c) : cs
| y `elem` c = (x : c) : cs
| otherwise = c : classify (x, y) cs

inEqvCl :: Eq a => (a, a) -> [(a, a)] -> Bool
inEqvCl (x, y) lis = (not . null) (filter (f x y) (foldr classify [] lis))
where f x y c = x `elem` c && y `elem` c

いろいろ最適化の余地があるが。

594 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:32:57 ]
あ、>>593 間違ってるわ。これだと [(3, 4), (1, 3), (2, 4)] とかで
うまくいかない。

595 名前:591 mailto:sage [2005/05/22(日) 22:42:11 ]
>>592-594

ありがとうございます。
やっぱり短く書けるんですね。

596 名前:デフォルトの名無しさん [2005/05/23(月) 22:10:44 ]
無限のリストだと止まらなくなるかな



597 名前:シミュレーション板GPスレから来ました [2005/05/24(火) 01:12:59 ]
PolyGP: A Polymorphic Genetic Programming System in Haskell
↑のプログラムソース PolyGP.tar って、uclのサイトから消えている様ですが、
どこかにバックアップないでしょうか?
よろしく、おながいします。

598 名前:591 mailto:sage [2005/05/24(火) 05:44:25 ]
とりあえず問題が2つありました。

1. 反射的閉包なんで、inEqvCl (x,x) [] == Trueにならないといけない。

>>592さんのからinEqvCl _ [] = Falseを取り除けばOK。

2. (\\)は最初の1つしか取り除かないので、最初の集合に対称なものがあると拙い。

(\\)の代わりに下の(//)を使って対処。

(//) :: Eq a => [a] -> [a] -> [a]
xs // ys = [ x | x <- xs, x `notElem` ys ]


>>596
無限リストは今回は対象外なので問題ないです。(^^;

599 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 00:42:11 ]
Haskellの配列の更新(//)は一部変更でも配列全部作り直したり
してるんですか?
リングバッファとかに使っても大丈夫ですか?

600 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 01:42:54 ]
600

601 名前:599 mailto:sage [2005/05/27(金) 22:02:30 ]
>>599
自己レス
ttp://d.hatena.ne.jp/tanakh/20040809#p1
ここみるとだめっぽい感じでした

GCが仕事してくれること期待して
配列ガシガシ使い捨てにでもするか

602 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 22:21:03 ]
いつまでたっても関数型のボトルネックだな>配列・構造体
これが解決しない限り関数型が栄えることは無い

603 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 22:21:57 ]
俺達でwadlerを唸らせる解を考えよう

604 名前:デフォルトの名無しさん [2005/05/28(土) 01:00:55 ]
配列も、マクロな視点で見ればただの変数に変わりない
だから、修正された瞬間複製するのが妥当な戦略だろう
しかし、オリジナルが参照されないとわかっているなら複製する必要ないから複製を省略する。
ここまで考えてふと思いついた。
すなわち差分をもっとけばいいんじゃないかと。
配列n番目更新しますた!更新しますた!という情報を各インデクス毎に持っとくわけよ
配列を全て更新しおわたとしても、またさらに更新するかもしれない
その場合はまたその差分を作るわけよ
するとどうだい?
差分として分解された各配列の要素はまるでりすt(ry

おれには難しすぎたようだ!

605 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 01:13:09 ]
>>602
Uniqueness Typing

606 名前:デフォルトの名無しさん [2005/05/28(土) 05:03:54 ]
配列や構造体もモナドにしたら?



607 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 08:38:44 ]
starray とかいうモナドがあると聞いたが
漏れは調べてないので諸君調べて報告してくれ

608 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 11:15:19 ]
マクド


609 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 13:50:31 ]
>>606
つIOUArray

610 名前:デフォルトの名無しさん [2005/05/28(土) 14:11:18 ]
伝説のモナド

611 名前:デフォルトの名無しさん [2005/05/28(土) 14:23:54 ]
ナボナ@亀屋万年堂
www.navona.co.jp/

これのことでしょ?

612 名前:デフォルトの名無しさん [2005/05/28(土) 20:20:45 ]
>>607
それはスタレイました

613 名前:デフォルトの名無しさん [2005/05/28(土) 20:52:42 ]
>>28で紹介されているrrr.jin.gr.jp/のRWikiがNot Foundで見れません。

どうしたらよかとですか?

614 名前:613 mailto:sage [2005/05/28(土) 20:54:47 ]
自己解決しました。
://pub.cozmixng.org/~the-rwiki/rw-cgi.rb にありました。


615 名前:デフォルトの名無しさん [2005/05/30(月) 20:59:12 ]
ハスケルを勉強したい時にはどうしたらいいですか?
日本語の丁寧なチュートリアル文献がありますか?
>>1のは難しいですよ

616 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 21:15:20 ]
>>615
1. haskellで適当なコードを書く
2. -ddump-realCをつけてコンパイル
3. 1と2の結果を見比べる



617 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 21:46:39 ]
>>615
ttp://www.geocities.jp/shido_takafumi/hs/index_hs.html
とか。

618 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 22:05:26 ]
>>616
これなかなか良いね。

619 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 22:21:34 ]
>>615
www.sampou.org/cgi-bin/haskell.cgi?Programming%3aWayToHaskeller&l=jp
とかはどう?


620 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 22:29:19 ]
>>616
Cに落とさなくてもcore言語レベルでいいんじゃない?

621 名前:デフォルトの名無しさん [2005/05/31(火) 09:34:43 ]
mona do !

622 名前:デフォルトの名無しさん [2005/06/02(木) 00:38:18 ]
monadius


623 名前:sage [2005/06/02(木) 14:55:24 ]
Hugsなんだけど

Main> -1 ってやると
-1

Main> ( - 1) 2 とやると

ERROR - Unresolved overloading
*** Type : (Num a, Num (a -> b)) => b
*** Expression : fromInt (-1) 2

 んん?(-) は単項演算子なのか!?


しかしMain> ( - ) 1 2 とやると
-1 とかえってくる。

(-)は二項演算子ってことになってるんじゃなかったのか!?

www.sampou.org/haskell/tutorial-j/numbers.html
>negate は Haskell では唯一採用された前置演算子です。
>これを (-) と書くことはできません。
>それは、こう書けば、減算関数になってしまうからです。

どうなってるの?>識者の方々


624 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 15:56:22 ]
-1
(- 1)
(- 1) 2
の - はnegateのことで単項演算子

(-) 1 2
((-) 1) 2
(1 -) 2
1 - 2
の - は二項演算子

625 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 17:54:00 ]
>>624
それって上の引用の記述と矛盾してないかって事。

HugsはHaskell98モードでも再現したよ。
上の記述が古いのかHugsの独自仕様なのか、、、

実際-1と書けたほうが便利だけどね。

一瞬
「(\x -> x - 1) を 自動的に -1 に変換してるのかHaskell凄えな」

と思ったけど
型が全然違うし。


626 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 19:21:51 ]
括弧のついてない - はその直前に第1引数になるものがなければ単項演算子として解釈されるってだけなんじゃないの。



627 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 20:15:18 ]
>>623
原文は
>negate is the function applied by Haskell's only prefix operator, minus; we can't call it (-), because ...
だから、誤訳かと。
一応報告しておいた。

628 名前:デフォルトの名無しさん [2005/06/02(木) 23:01:09 ]
>>625
>それって上の引用の記述と矛盾してないかって事。

どこが?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<259KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef