【数学者】Haskellはクソ言語【オナニー】at TECH
【数学者】Haskellはクソ言語【オナニー】 - 暇つぶし2ch624:デフォルトの名無しさん
07/12/30 18:01:39
Apple=>Ruby/Objective-C
Micro$oft=>F#/Visual-???
Unix=>Gauche/Haskell/etc

625:デフォルトの名無しさん
07/12/30 18:03:43
>>624
いいえ、
Unixは終焉までずっとC言語です。

626:デフォルトの名無しさん
07/12/30 18:09:22
>>625
Cはどのプラットフォームでも使うアセンブラ的なポジションになってると思う。

627:デフォルトの名無しさん
07/12/30 18:16:40
妥協の産物=>Perl/Ruby/OCaml
理想主義者=>Squeak/Haskell
現代の化石=>C/Lisp/Fortran/COBOL

628:デフォルトの名無しさん
07/12/30 18:21:59
COBOL?まだ使ってるところあるの?もう全部Javaになったかと思った。
Fortranは物理の世界では現役バリバリです。
Lisp・・・うーん

629:デフォルトの名無しさん
07/12/30 18:29:20
市役所勤務の知り合いがいうには
優秀なやつはシステム課に回されてコボルやらされるらしいですよw

630:デフォルトの名無しさん
07/12/30 18:30:36
Perl<=Larry Wall
Ruby<=Matz
OCaml<=INRIA
Squeak/Smalltalk<=Xerox Park(Allan Kay)
Haskell<=Bastiaan Heeren、Daan Leijen、Arjan van IJzendoorn
C<=K&R
Scheme<=Guy Lewis Steele Jr.、Gerald Jay Sussman
Fortran<=John Warner Backus
COBOL<=CODASYL

631:デフォルトの名無しさん
07/12/30 18:33:05
つ「お題  プログラミング言語の父と呼ばれるのは誰?」

632:デフォルトの名無しさん
07/12/30 18:57:01
チャールズ・バベッジ

633:デフォルトの名無しさん
07/12/30 20:19:25
階差機関(difference engine)は世界初のプログラム可能な計算機と云われています。
では、どのようにプログラムしたのでしょう?

634:デフォルトの名無しさん
07/12/30 20:34:42
>>631
まつもとゆきひろ

635:デフォルトの名無しさん
07/12/30 21:54:11
超良スレ保守

636:デフォルトの名無しさん
07/12/30 23:14:14
プログラミング言語の父といえばシェーンフィンケルとHaskellだろう。1920年代のコンビネータ論理(Combinatory Logic)だ。
シェーンフィンケルが考案し、Haskellが開発した。
その仕事が1930年代のチャーチとクリーネによるメタ言語としてのλ算法の業績につながった。
そしてその後1954年にIBMのバッカスが最初の高級言語FORTRANを作る。

こういう歴史の直系だから、言語としてのHaskellが研究志向が強いというのもうなづける。

637:デフォルトの名無しさん
07/12/30 23:22:30
カリー・ハワード同型対応なくしてプログラミング言語など存在し得ない。

638:デフォルトの名無しさん
07/12/30 23:40:29
>>619
そもそも、プログラミングパラダイムとしてのオブジェクト指向というのが
「状態と手続きを一纏めにしてカプセル化する」という動機で導入されたものだから。
本質的に「状態」を持たない関数型の世界にオブジェクト指向が入り込む余地はそもそも無い。

あと、細かいことだが
>本来のオブジェクトって言ったら抵抗とかコンデンサとかみたいに副作用がないもののはずなんだがなぁ。
コンデンサってのは電荷をためて(状態変化)それを放電する(これも状態変化)ものでないかい?
微分方程式ばかり相手にしてると忘れがちになりかねないけれども、コンデンサは確かに「状態」を持つよ。
抵抗のことはよく分からんが。

>>622
>これらが関数型の世界でどんな進化をするのか興味深い。
「純粋関数型」を標榜するHaskellとはオブジェクトは相容れないし、
OCAMLでもコード中、オブジェクト機能を使ってる部分は、「関数型っぽく」はならないだろ?
オブジェクトが関数型の世界でどうなるか、という興味は無意味だと思うね。
オブジェクトの世界と関数型の世界とがどう棲み分けて共存していくか、ならわかるが。


639:デフォルトの名無しさん
07/12/30 23:59:13
>>638
オブジェクト指向と関数型が共存することでこういったことが出来ればいいなぁという要求は出てくると思う。
これまでの言語の発展だってそういうことから出てきてる。
この部分は相容れないけどこれは一緒にするとこんなことが出来るというのが実装上の工夫のポイントだと思う。
君には無意味かもしらんが。

640:デフォルトの名無しさん
07/12/31 00:35:57
Y コンビネータ (fixpoint のことを Y コンビネータと呼びます。)

data X = PsiInv (X -> (Int -> Int))

psi :: X -> (X -> (Int -> Int))
psi (PsiInv f) = f

fixpoint :: ((Int -> Int) -> (Int -> Int)) -> (Int -> Int)
fixpoint g = let h y = g (\x -> psi y y x) in
h (PsiInv h)

f :: (Int -> Int) -> (Int -> Int)
f g n = if n==0 then 1
else n * g(n-1)

factorial :: Int -> Int
factorial = fixpoint f
-- factorial 10 == 3628800

641:デフォルトの名無しさん
07/12/31 01:48:19
>>638
>そもそも、プログラミングパラダイムとしてのオブジェクト指向というのが
>「状態と手続きを一纏めにしてカプセル化する」という動機で導入されたものだから。

ハァ?www

642:デフォルトの名無しさん
07/12/31 01:51:09
>>638
>「状態と手続きを一纏めにしてカプセル化する」という動機で導入されたものだから。
どーでもいいがデータ構造とアルゴリズムを纏めるんじゃなかったかな?
状態云々は結果的にそういうプログラミング手法が出てきただけで本質的にはあんまり関係ないと思う。

まあHaskellの代数的データ型は型とデータ構造を対応付けて
型についてアルゴリズムを書くから、データ構造とアルゴリズムはほぼ完全に分離してるといえるかもしれない。
これはこれで結構分かりやすくていいシステムだとい思うんだけど、
たとえば型クラス便利だけどインターフェイスみたいにガンガン作る気にならないっていうか、
そういう細かいあたりがめんどくさくなってる気がする。
そういうのをオブジェクト指向で何とかできないものかとか思ったり。これは俺の浅知恵だけどね。

あと、細かいことだが
>コンデンサってのは電荷をためて(状態変化)それを放電する(これも状態変化)ものでないかい?
それは「副値」的なパラメータが存在するだけで実際にそれを「副作用」として実装するかはプログラマ次第では?
というかHaskellだったら普通にモナドで表現できるもんだと思う。

実世界での対応で考えると、ある力を外力と考えることも出来るし、より大きな系の内力と考えることも出来る程度の違い。
状態が存在するかどうかはどういう切り口で物事を見るかに依存している、と思う。

643:デフォルトの名無しさん
08/01/04 23:00:40
オブジェクト指向と関数型が共存できないという風評は日本だけ。
どこが発信源かは知らないがこういうことが普通に受け容れられるようになったんだなぁ。
ゆとり世代が言ってるんだろうか?

644:デフォルトの名無しさん
08/01/05 00:04:56
プログラミングに関する珍発言がまかり通るのは、日本では昔からの伝統です。
C言語が関数型言語であるとか、インタプリタはちょっとずつコード生成して実行する
処理系であるとか。

645:デフォルトの名無しさん
08/01/05 00:23:29
後者は国の問題じゃなくマーケティングの問題でそ

646:デフォルトの名無しさん
08/01/05 00:47:14
関数型のCAMLがオブジェクト指向を取り入れてObjective CAMLになったように、VBがλ算法を手始めに関数型を取り入れても不思議はないと思う。
VBの互換性を問題にしてる人は参照透過性とか副次作用とかを気にしてるんだろうか。OCAMLだってあまり考えずに代入とか使えば問題があるのは同じだと思うけど。
むしろOCAMLerがVBを使うときに便利だと思うけどなぁ。

647:デフォルトの名無しさん
08/01/05 00:49:18
それとも、OCAMLとHaskellでは全く違うということを問題にしてるんだろうか。

648:デフォルトの名無しさん
08/01/05 00:55:06
日本以外ではマルチパラダイムでお祭なのに

>オブジェクトが関数型の世界でどうなるか、という興味は無意味だと思うね。
>オブジェクトの世界と関数型の世界とがどう棲み分けて共存していくか、ならわかるが。

こういうことを周りに認めさせようとする日本人は多いんだろうなぁ。

649:デフォルトの名無しさん
08/01/05 15:43:07
プログラミングする人はいっぱいいても言語を考える人が少ないんだよ

650:デフォルトの名無しさん
08/01/05 16:00:40
まるちぱらだいむだうゎあい、って日本で竹内先生とかが頑張ったのは
世界の先を行ってたと思うんだけどな。

旧帝大-早慶-電電&電機メーカ研究所レベルの研究の浸透拡散がうまく
いかんのはどこかに構造的な問題があるんかね?

651:デフォルトの名無しさん
08/01/05 16:07:41
>>648
別にお祭りというほどでもありませんが。
単に研究ネタがなくなったから今主流のオブジェクト指向と組み合わせてみよう、
って思ってるだけじゃないの。

652:デフォルトの名無しさん
08/01/05 16:11:25
>>648
> こういうことを周りに認めさせようとする日本人は多いんだろうなぁ。

特定の環境にこり固まって極めちゃった悪い意味での職人型なプログラマとかにありそう。
そういう先輩が職場にいて、適切なフォローを入れる人がいなかったりすると、新人は悲惨だね。

653:デフォルトの名無しさん
08/01/05 16:23:02
>>640
SKIコンビネータのことをまとめてるHPを発見したので報告。
URLリンク(ls-al.jp)

ソースコードはこっち。
URLリンク(ls-al.jp)

なぜかYコンビネータはないけどY=SLLだからすぐに作れるね。

654:デフォルトの名無しさん
08/01/05 16:43:45
>>638みたいなMythに対しては古くからこういう有名な言葉があるんだが、

"Doing encapsulation right is a commitment not justto abstraction of state,

but to eliminate state oriented metaphors from programming."

Alan Kay, Early History of Smalltall

655:デフォルトの名無しさん
08/01/05 16:44:47
○Smalltalk
×Smalltall

656:デフォルトの名無しさん
08/01/05 17:12:45
Haskellはオブジェクト指向じゃないけど型クラスを使えるから準オブジェクト指向関数型言語とでも言えるのかな。
「型クラス」と「型構築子クラス」でオブジェクト指向っぽく使えて、副作用がないようにモナドやその一般化のアローが使える。
オブジェクト指向と関数型が共存出来ないと言いながらHaskellを使っている人は分裂気味なんじゃないでしょうかね。

657:デフォルトの名無しさん
08/01/05 17:23:03
いや、Type Class と、オブジェクト指向の「クラス」は別物な訳だが

658:デフォルトの名無しさん
08/01/05 17:26:07
>>657
だから『準』と言っている訳だが

659:デフォルトの名無しさん
08/01/05 17:30:37
「準」とかで片付けるとかどんだけwwwwwww

ばか

660:デフォルトの名無しさん
08/01/05 17:38:26
>>659さんは別物のクラスだとどういうことが言えると言いたい訳かな?
ご高説を是非御拝聴いたしましょう。

661:デフォルトの名無しさん
08/01/05 17:44:34
どんだけwwwwwばか

関数型とオブジェクトなんざ共存出来ねんだよ。

無意味、無意味。無駄無駄無駄wwwwww

662:デフォルトの名無しさん
08/01/05 17:47:28
Haskellerはオブジェクト指向もわからないばかということですか。ああそうですか。


663:デフォルトの名無しさん
08/01/05 17:49:37
残念な展開だね。

664:デフォルトの名無しさん
08/01/05 17:57:51
>>656
arrow使いにくい
まるでbrainf*ckみたいに見える
結局は普通に書いたほうがきれいだ

665:デフォルトの名無しさん
08/01/05 18:13:14
「普通」とかで片付けるとかどんだけwwwwwww

ばか

やっぱHaskellerってのは池沼だね。

666:デフォルトの名無しさん
08/01/05 18:20:23
-- A Simple Brainfuck Interpreter

import System.Environment

-- Parser

data Command = Inc | Dec | Next | Prev | Put | Get | While [Command]
deriving (Show, Eq)
type Program = [Command]

parse :: String -> Program
parse s = program where (program, "") = parse1 s

parse1 :: String -> (Program, String)

parse1 "" = ([], "")
parse1 (']':xs) = ([], xs)

parse1 ('[':xs) = (While cmds1 : cmds2, rest2)
where (cmds1, rest1) = parse1 xs
(cmds2, rest2) = parse1 rest1

parse1 (x:xs) = (parse2 x, rest)
where (cmds, rest) = parse1 xs
parse2 :: Char -> Program
parse2 '>' = Next : cmds
parse2 '<' = Prev : cmds
parse2 '+' = Inc : cmds
parse2 '-' = Dec : cmds
parse2 '.' = Put : cmds
parse2 ',' = Get : cmds
parse2 _ = cmds

667:デフォルトの名無しさん
08/01/05 18:22:21
type Tape = ([Char], Int)
tape0 = (['\NUL', '\NUL'..], 0) :: Tape
getCell :: Tape -> Char -- Get value of current position
getCell (cs, i) = cs !! i
setCell :: Tape -> Char -> Tape
setCell (cs, i) c = (take i cs ++ (c : drop (i + 1) cs), i)
inc, dec, next, prev :: Tape -> Tape
inc t = setCell t (succ $ getCell t)
dec t = setCell t (pred $ getCell t)
next (cs, i) = (cs, i + 1)
prev (cs, i) = (cs, i - 1)

668:デフォルトの名無しさん
08/01/05 18:23:18
type Status = (Program, Tape, [Char], [Char])
step :: (Tape -> Tape) -> Status -> Status
step f (c:cs, tape, inp, outp) = eval (cs, f tape, inp, outp)
eval :: Status -> Status
eval (Get : cmds, tape, (i:inp), outp) = eval (cmds, setCell tape i, inp, outp)
eval (Get : _, _, "", _) = error "EOF"
eval s @ (Put : _, tape, _, _) = (cmds, tape1, inp, getCell tape : outp)
where (cmds, tape1, inp, outp) = step id s
eval s @ (Inc : _, _, _, _) = step inc s
eval s @ (Dec : _, _, _, _) = step dec s
eval s @ (Next : _, _, _, _) = step next s
eval s @ (Prev : _, _, _, _) = step prev s
eval s @ (While cmds : cmds1, tape, inp, outp) = while (getCell tape)
where while '\NUL' = step id s
while _ = (cmds2, tape2, inp2, outp1 ++ outp2)
where (_ , tape1, inp1, outp1)
= eval (cmds, tape, inp, outp)
(cmds2, tape2, inp2, outp2)
= eval (While cmds : cmds1, tape1, inp1, outp1)
eval ([], t, i, _) = ([], t, i, "")

669:デフォルトの名無しさん
08/01/05 18:24:49
run :: Program -> [Char] -> [Char]
run cmds inp = outp where (_,_,_, outp) = eval (cmds, tape0, inp, "")

main :: IO ()
main = do cs <- getContents
args <- getArgs
source <- readFile (head args)
putStr $ run (parse source) cs


-- brainf*ckなんてたったこれだけ。

670:デフォルトの名無しさん
08/01/05 18:35:01
>>665
お前は日常会話もできなそうだな

671:デフォルトの名無しさん
08/01/05 18:35:35
>>669
それをarrowでどうぞ

672:デフォルトの名無しさん
08/01/05 18:45:58
>>638
状態を持たないステートレスオブジェクトはそのまま純粋関数型言語に取り込めますよね。
「純粋関数型」を標榜するHaskellは状態がないのではなくモナドに閉じ込めています。
ステートフルオブジェクトの状態も同様にモナドに閉じ込める事で「純粋関数型」を
維持したままオブジェクトを利用できると考えますが何か問題があるのでしょうか?

673:デフォルトの名無しさん
08/01/05 18:56:27
>>672
>>664>>671でも書いたがarrowが使いにくいんだよ。brainf*ckみたいだろ。

brainf*ckを書き込んだ池沼にはわからねぇんだろうが

674:デフォルトの名無しさん
08/01/05 18:59:06
>>672
うんうん。Monadiusとかそうだよね。

675:デフォルトの名無しさん
08/01/05 19:14:19
>>670
で、「普通」の説明はマダァ?

676:デフォルトの名無しさん
08/01/05 20:14:22
           , - ' ´ ̄ ``  、__
         __,ィ            ヽ. `ヽ.
      ,  '⌒Y  /     、ヽ    ヽ  ヽ.
     /    /  i   /l/|_ハ li  l i   li   ハ
.    // 〃 /l  i|j_,.//‐'/  lTト l、l   j N i |
   {イ  l  / l  li //___    リ_lノ lル' lハ. ソ  ___◎_r‐ロユ
    i| /レ/l l  l v'´ ̄  , ´ ̄`イ  !| ll,ハ └─‐┐ナ┐┌┘ _  ヘ____
    ハ| ll∧ハヽ ト、 '''' r==┐ '''' /l jハ| ll ll    /./┌┘└┬┘└┼──┘ロコ┌i
   〃  ∥ レ'¨´ヽiへ. _ 、__,ノ ,.イ/|/ ノ ll l|   </   ̄L.l ̄ ̄L.lL.!         ┌┘|
  ll    ll {   ⌒ヽ_/ } ー‐<.__  ′  l| ∥
  ∥    ∥ ヽ,   /、 〈   |:::::::| `ヽ      ∥
  ∥       {.  ハ ヽ Y`‐┴、::::v  l      ∥
  ∥      |iヽ{ ヽ_ゾノ‐一’::::ヽ. |      ∥
  ∥      |i:::::`¨´-- :::......:...:.:.::.}|     ∥
  ∥      |i::::::ヽ._:::_:::::::::::::::::::_ノ |     ∥
  ∥      |i::::::::::::i___:::::::::::/  |
           jj::::::::r┴-- `ー‐ '⌒ |
         〃:::::::マ二      _,ノ
       //::::::::::::i ー 一 '´ ̄::.
       ,','::::::::::::::i::::::::::::::::::::::i::::::ヽ

677:デフォルトの名無しさん
08/01/05 20:14:38
>>675
それは658が一番詳しいから658に聞いてくれ

678:デフォルトの名無しさん
08/01/05 20:25:09
さんざ荒らして説明拒否かよw

679:デフォルトの名無しさん
08/01/05 20:28:47
えっ、だれが荒らし?

680:デフォルトの名無しさん
08/01/05 20:34:27
池沼の「普通」なんて誰も興味ねえってよw

681:デフォルトの名無しさん
08/01/05 20:37:07
>>679
少なくとも>>676はアラシだろw

682:デフォルトの名無しさん
08/01/05 21:28:20
>>677
ぐぐれYO!ばか
URLリンク(d.hatena.ne.jp)
URLリンク(d.hatena.ne.jp)

683:デフォルトの名無しさん
08/01/05 22:10:09
>>665
普通?
社会通念だよ。

684:デフォルトの名無しさん
08/01/05 22:10:54
論文じゃあるまいし。
揚げ足取りなんかやってるから単位も危なくなるんだぞ?

685:デフォルトの名無しさん
08/01/05 22:25:42
>>683-684
せっかくぐぐって終息させてやろうとしてるのに馬鹿だねおまえはw
黙ってれば終わったのに。
晒しage

686:デフォルトの名無しさん
08/01/05 22:27:36
これが関数型使って気取ってる池沼の実態ですwwwwww

ばか

687:デフォルトの名無しさん
08/01/05 22:30:06
使えもしないのに関数型に憧れてんなYO!
Haskell使いキモスwwwwww

688:デフォルトの名無しさん
08/01/05 22:34:13
スレタイ通りのオナスレageんな

689:デフォルトの名無しさん
08/01/05 22:37:08
クソ言語が普通とか言ってんなよ。所詮、脳内オナニー。

690:デフォルトの名無しさん
08/01/05 22:39:26
恥ずかしいスレ名をアゲんな、変体どもがぁ。
Haskellはプログラム板の恥だな。

691:デフォルトの名無しさん
08/01/05 22:43:34
スレの削除依頼出せ.キモイんだよお前等

692:デフォルトの名無しさん
08/01/05 22:46:01
まあ、重複スレなのでこちらを削除しても問題ありませんね。

693:デフォルトの名無しさん
08/01/05 22:57:22
↑さんざん恥をかいたのでスレ削除して欲しい張本人がこう申しておりますw

694:デフォルトの名無しさん
08/01/05 22:59:01
Haskell使ってる人って頭が良いイメージだったけどw

695:デフォルトの名無しさん
08/01/05 23:01:32
なかなか笑わせてもらった

696:デフォルトの名無しさん
08/01/05 23:18:12
「Haskell」=「Arrow」+「普通」

697:デフォルトの名無しさん
08/01/05 23:20:35
普通ってwwww

「プログラム」=「データ構造」+「アルゴリズム」

ってWirth先生が言ってたぞ。


698:デフォルトの名無しさん
08/01/05 23:21:56
>>697
先生のゆーとーり世代

699:デフォルトの名無しさん
08/01/05 23:21:57
アローだってデータ構造だろうに。

700:デフォルトの名無しさん
08/01/05 23:23:22
普通のアルゴリズムなんて定義できんだろ。

701:デフォルトの名無しさん
08/01/05 23:24:32
普通のどこが気に入らないんだろう

702:デフォルトの名無しさん
08/01/05 23:25:43
アローに付随したアルゴリズムに定石でもあるのか?そんな本見たことねーぞ。
むしろ教えろゴルァ!

703:デフォルトの名無しさん
08/01/05 23:28:27
アローの定石と言えるかわからないけどバード先生の本には載ってる

704:デフォルトの名無しさん
08/01/05 23:35:36
Rahbi & Lapalme にはモナドの説明が無いけど、

Introduction to Functional Programming Using Haskell
Richard Bird

こっちには載ってるのか。

705:デフォルトの名無しさん
08/01/05 23:39:06
アロー程度がちょちょいと説明できないようじゃHaskell使いこなせてると言えないよね。

706:デフォルトの名無しさん
08/01/05 23:40:25
アローって簡単?

707:デフォルトの名無しさん
08/01/05 23:46:49
>>706
ふ・つ・う wwwww
お頭が弱いとアローがbrainf*ckみたいに見えるらしいけど、可換図式みたいで判りやすいよ。
ハッキリ言って簡単。基礎的な数学力があればだけど。圏論ぐらいは出来ないと無理かな。

708:デフォルトの名無しさん
08/01/05 23:48:02
>>707
> ハッキリ言って簡単。基礎的な数学力があればだけど。圏論ぐらいは出来ないと無理かな。
どうやら、arrowでプログラミングしたこともないことがよくわかった。

709:デフォルトの名無しさん
08/01/05 23:55:34
アマゾンみたらバードの本にはモナドとかアローについて書いてあるらしい。
でも翻訳はMirandaについてでモナドとか載ってなさげだねぇ。

710:デフォルトの名無しさん
08/01/06 00:10:55
Arrowって、Kleisli 圏とか Premonoidal 圏みたいなもんか。たしかに図を描けばなんてことなさげ。

711:デフォルトの名無しさん
08/01/06 00:16:47
>>708
はいはい。あーarrowはむずかしいいや。brainf*ckみたいにみえるなあw

712:デフォルトの名無しさん
08/01/06 00:21:36
教訓

・ オブジェクト指向と関数型は共存出来ない。

・ 「Haskell」=「Arrow」+「普通」 (ただしArrowはbrainf*ckである)

713:デフォルトの名無しさん
08/01/06 00:29:02
>>712
なにそれ?Haskell全否定じゃん。

714:デフォルトの名無しさん
08/01/06 00:31:52
708は口調ですぐわかるな。アンチなら使わなきゃイイジャン。

715:デフォルトの名無しさん
08/01/06 00:51:13
アローって意味的にはモナドなんかよかよっぽど理解できるだろ。
要するに計算の合成を定義すればいいだけ。
フリーダムすぎて使い方を迷うところはあるけど……圏論の知識とかいるか?

716:デフォルトの名無しさん
08/01/06 00:59:29
>>715
いらない。

717:デフォルトの名無しさん
08/01/06 01:00:54
arrowでプログラミングするのに数学も圏論の知識も微塵も必要ない。

718:デフォルトの名無しさん
08/01/06 01:01:02
>>715
あれば簡単ってことなんじゃないの?おれ圏論知らないけどさw

719:デフォルトの名無しさん
08/01/06 01:03:26
>>715
アローってモナドの一般化したやつじゃん。ほとんど同じだろ。
アローが関数を受け持って、モナドが値を受け持つ箱みたいなイメージ。
違ったっけ?

720:デフォルトの名無しさん
08/01/06 01:07:59
>>717
それは極論だろ。SコンビネータとかBコンビネータとかYコンビネータを適用するとき副作用があるのか分からなくてドキドキする。
数学知ってたらこういうことがさらっと出来ていいんだろうなと思う。

721:デフォルトの名無しさん
08/01/06 01:10:19
Haskellじゃなくてもいいようなプログラムなら数学の知識はいらないとは言えるw

722:デフォルトの名無しさん
08/01/06 01:13:48
結局、Haskellを何に利用しているかでアローの難易度も違って見えるんだろうね。

723:デフォルトの名無しさん
08/01/06 01:21:50
いらない・無意味・微塵も必要ない

724:デフォルトの名無しさん
08/01/06 01:28:42
普通

725:デフォルトの名無しさん
08/01/06 04:40:35
arrow関連で卒論書きたいんですが、受けはいいでしょうか?

726:デフォルトの名無しさん
08/01/06 13:30:28
>>719
値を受け持つ箱と考えるより、monadic function(a->m b)の形式で計算を纏めていく戦略と考えたほうが
理解しやすいかもしれん。monadic valueそのものをモナドだと思ってしまうとよくわからんなるんじゃない?

727:デフォルトの名無しさん
08/01/06 15:41:27
>>717
ならこのスレに来るな。ここはクマーが圏論を説明してくれた偉大なスレだ。

728:デフォルトの名無しさん
08/01/06 15:44:29
>>720
数学の知識がなくてもSコンビネータとかBコンビネータとかYコンビネータが
何を意味しているのかだけ知っていればどきどきすることはありません。

729:デフォルトの名無しさん
08/01/06 15:54:07
>>728
意味が良くわからない。AAで説明してくれ。たのむわ。

730:デフォルトの名無しさん
08/01/06 16:07:19
           /-─-,,,_: : : : : : : : :\
          /     '''-,,,: : : : : : : :i
          /、      /: : : : : : : : i     ________
         r-、 ,,,,,,,,,,、 /: : : : : : : : : :i    /
         L_, ,   、 \: : : : : : : : :i   /  圏論持ち出したら
         /●) (●>   |: :__,=-、: / <   負けかなと思ってる
        l イ  '-     |:/ tbノノ    \  ニート(24・男性) 
        l ,`-=-'\     `l ι';/      \ 
        ヽトェ-ェェ-:)     -r'          ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         ヾ=-'     /

731:デフォルトの名無しさん
08/01/06 16:26:09
>>730
博士課程のニーとですがなにか

732:デフォルトの名無しさん
08/01/06 16:39:00
数学の知識無しでアローをAAで説明出来んじゃなかったの?
しったかかw クマーktkr

733:デフォルトの名無しさん
08/01/06 17:23:29
スレの流れに
水を差すようで申し訳ないんだが
ちょっと質問
>>720
にある「(対称)前モノイダル圏」って
よく意味が解らない
対称モノイダル圏の条件を弱めたものらしけど
対称モノイダル圏だとなにか不味い事でもあるのですか


734:733
08/01/06 17:25:08
>>720
でなく
>>710だた

735:デフォルトの名無しさん
08/01/06 17:38:01
アローなんて簡単だろ
ほれ、これがアローだ


736:デフォルトの名無しさん
08/01/06 17:51:02
これの事でしょうか?ハァハァ

        /⌒ヽ⌒ヽ
               Y
            八  ヽ
     (   __//. ヽ,, ,)
      丶1    八.  !/
       ζ,    八.  j
        i    丿 、 j
        |     八   |
        | !    i 、 |
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ∥
        │     i   ∥
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
    |           | ∥
   /          ヾ

737:デフォルトの名無しさん
08/01/06 17:53:24
AA職人がいなくなってつまんなくなったね。

738:デフォルトの名無しさん
08/01/06 17:54:47
AA職人というか、コピペで説明してただけだろ?

739:デフォルトの名無しさん
08/01/06 17:57:34
その「説明してただけ」すら出来ないコピペ厨w

740:デフォルトの名無しさん
08/01/06 17:58:38
たしかに1年でレベルが落ちたのは否定できんなw

741:デフォルトの名無しさん
08/01/06 17:59:42
単にスレが捨てられただけでは?

742:デフォルトの名無しさん
08/01/06 18:00:42
いまどきarrowなんてみんな知ってて、いまさら説明の余地もない。
新しいネタ探して来い

743:デフォルトの名無しさん
08/01/06 18:14:58
>>742
こら!みんなが矢印とかちんぽを無視したからって怒るでないw

744:デフォルトの名無しさん
08/01/06 18:17:28
クマーってもう一年前の話か。上のほう見たら2つもあるね。

745:デフォルトの名無しさん
08/01/06 18:19:22
>>742
↑とアローの説明が出来ないクズが取り乱しております

746:デフォルトの名無しさん
08/01/06 21:27:48
>>728
コンビネータ理論を知っていれば十分で数学の知識を前提としないって?おいおい。
支離滅裂だぞ。

747:デフォルトの名無しさん
08/01/06 21:44:24
>>746
数学の基礎的な知識はそれほど必要ないだろ。
「それだけ」知ってればいいんだから。

748:デフォルトの名無しさん
08/01/06 21:55:31
>>747
基礎の意味が違うでしょ。コンビネータ理論は数学基礎論であって、数学の基礎知識じゃない。
しかも副作用についての知識は、いくつかのコンビネータを知ってるではすまない。
他にも山のようにある関数について、一つ一つ個別に知ってるよりも理屈を知ったほうが当然良い。

749:デフォルトの名無しさん
08/01/06 23:51:52
λλλλλ...

↑アロー・モナド・コンビネータ理論について行けず、肩を落として帰るプログラマの群れ

750:デフォルトの名無しさん
08/01/07 00:08:05
正直arrowとかどうでもいい
それよりhere documentを入れてくれ

751:デフォルトの名無しさん
08/01/07 00:29:30
>>750
URLリンク(cvs.haskell.org)

752:デフォルトの名無しさん
08/01/07 20:07:34
>>733
くわしくはこのページが参考になる。
URLリンク(d.hatena.ne.jp)

John Power & Edmund Robinsonによれば:

* TのKleisli圏C_Tがプレモノイド圏となる ⇔ Tは強度を持つ
* TのKleisli圏C_Tがモノイド圏となる ⇔ Tは可換強度を持つ

これはKleisli圏のプレモノイド構造と強度が1対1に対応しているということで、モノイド圏では都合が良くない。つまり、

プレモノイド圏となる⇒・・・⇒モナドの作用乗法

というのがwell-definedになるということを狙ってる。たしかにモナドって数学的な基礎知識無しでも使えると確信しましたか?

753:デフォルトの名無しさん
08/01/07 20:44:58
当然だけど、アローについても同様の議論が展開できる訳です。まあ、アローなんかどうでも良いんでしたね。

754:デフォルトの名無しさん
08/01/07 22:52:18
モノイド圏とモノイダル圏て何が違うの?

755:デフォルトの名無しさん
08/01/07 23:07:53
>>752
乙。>>710あたりが言ってた図を書くって「ペースティング図、スタック図(Santiago graphical notation)、ストリング図で描く・・・」てことか。
おれも>>735みたいなのをアローと思ってたw

756:デフォルトの名無しさん
08/01/07 23:13:13
>>754
Monoidal Category = モノイド圏
>>733しかモノイダル圏という日本語は使っていないと思う。普通、モノイド圏と呼ぶ。

757:デフォルトの名無しさん
08/01/07 23:44:59
>756 thx

ところで、圏でのモナドは分かるんですが、
プログラム言語のモナドって何なんですか?


758:デフォルトの名無しさん
08/01/08 00:30:05
検索しましたら次の資料が見つかり自己解決しました。
URLリンク(www.ipsj.or.jp)

759:デフォルトの名無しさん
08/01/08 00:33:47
>>757
ほい
URLリンク(www.sampou.org)

HaskellのモナドはMonadという型クラスのインスタンスれす。
Monadクラスは2つのクラスメソッドを持っていて、その2つがモナド則(3ホーソクありゅ)を満たしてマース。
よく使うモナドはIO, Maybe, Listあたりでしょう。どれも「演算」を繋ぐという感じに使いマース。

この3行を見たらリンク先にJUMP!

2つのクラスメソッドは、最初のうちは『>>=』が『|』(パイプ)に対応、『return』が『cat』に対応すると覚えておけば良いかもネ!
(Jonesはわざとパイプっぽくしたらしいネ)
モナドの構文は3つ。doとletとifだけ。

演算をモナド的に定義して繋ぐと、新しい特徴を参照透過的にモナドに結びつけることが出来ちゃう。
しかもモナド則3が保証するように「組み立て順序が自由」で、長くつながったモナドの鎖のどこを切ってもモナドになるョ。
これがモナドがもたらすモジュール化という効能だよーん。

760:デフォルトの名無しさん
08/01/08 01:11:34
>759 おおDankeです
プログラムにはなかなか深い数学が隠れているんですね。
いまふと思ったんですが、物理に出てくる量子化という
概念も、もしかするとモナドに関係あるかも知れません。
モジュラリティが何を意味するのかよく考えてみます。





761:デフォルトの名無しさん
08/01/08 21:02:22
ここの説明もなかなかおもしろいよ。
URLリンク(blogs.dion.ne.jp)

762:デフォルトの名無しさん
08/01/08 21:15:53
>>761
宣伝乙

763:デフォルトの名無しさん
08/01/08 21:40:15
>>759
doとletは分かるけど、ifってモナドと関係あったっけ?

764:デフォルトの名無しさん
08/01/08 23:36:51
>>761
説明が間違ってるところ大杉。
自分でモナドを作る時、どうするつもりかと思った。

765:デフォルトの名無しさん
08/01/08 23:45:48
>>763
do と if を一緒に使う話じゃないかな。有名な「一行で書け」ってやつ。

766:デフォルトの名無しさん
08/01/09 00:55:16
>>761
パクったはいいが、意味を理解してなかった、ってところか。

767:デフォルトの名無しさん
08/01/09 09:22:24
>>761ってそんなに間違いが多いのか~
どこからパクったのか分かりますか?

768:デフォルトの名無しさん
08/01/13 07:49:24
この年末年始のプログラマの休暇に
ここのスレが結構盛り上がっていたな

769:デフォルトの名無しさん
08/01/13 08:07:15
プログラマは休暇にHaskellの勉強か
みんな偉いな

770:デフォルトの名無しさん
08/01/13 10:35:26
どのへんがまちがってるの?

771:デフォルトの名無しさん
08/01/13 17:53:03
勘違いしてるだけなんじゃない?

772:デフォルトの名無しさん
08/01/18 04:18:25
なんだかんだ言って、本当はぜんぜん分かってない奴がほとんどだろw

773:デフォルトの名無しさん
08/01/18 09:45:24
まぁ仲間は多いと思っておきたいところだよな。

774:デフォルトの名無しさん
08/01/18 15:35:54
>>761の間違いを早く指摘して欲しいもんだなw

775:デフォルトの名無しさん
08/01/18 15:37:06
>>774
そういってPV稼ぐ魂胆だろ
自演乙

776:デフォルトの名無しさん
08/01/19 15:18:10
こんなとこで宣伝したところで何PV増えるというのか

777:デフォルトの名無しさん
08/01/19 18:53:04
>>775
そうやって自分が理解できてないのを誤魔化そうって魂胆だろ。
まずは>>761の間違いを指摘してみろよ。話はそれからだなw

778:デフォルトの名無しさん
08/01/19 21:02:10
ひとり暴れているのがいるみたいだね。誰も話したくないからって理解できないんだろうか。

779:デフォルトの名無しさん
08/01/20 13:31:52
いったいどこからパクったのか教えてくれよ。

780:デフォルトの名無しさん
08/01/20 13:54:12
>>779
どうでもいい

781:デフォルトの名無しさん
08/01/20 18:21:29
どうでもよくないな。それによって>>761が間違いかどうか判断できるだろ。

782:デフォルトの名無しさん
08/01/23 20:01:14
その判断がどうでもいいと言っているんだよ

783:デフォルトの名無しさん
08/01/23 20:35:14
1/8を最後にパッタリ流れが止まったのはなぜかな?

784:デフォルトの名無しさん
08/01/23 20:41:46
ヒント 自演

785:デフォルトの名無しさん
08/01/24 04:24:11
結局Haskellって遅いの?

786:デフォルトの名無しさん
08/01/24 22:55:28
>>785
perlよかハエーよ  スクリプトに使うなら無問題
組込系にはちょっと  シビアなタイミングが求められるとダメポ

787:デフォルトの名無しさん
08/02/16 05:51:47
>>786
>組込系にはちょっと  シビアなタイミングが求められるとダメポ
組み込みはどんな感じのアセンブリコードが生成されるのか予測しやすいほうがいいと思うんだが、
Haskell使いが慣れてくるとどういうasm吐くか割と簡単に把握できるようになるの?


788:デフォルトの名無しさん
08/02/16 12:33:33
>>786
Perlよかはやいとか到底考えられないのだけど、その根拠は?

789:デフォルトの名無しさん
08/02/16 13:35:05
>>788
URLリンク(shootout.alioth.debian.org)
だと 14 対 1 で Haskell が速い

790:デフォルトの名無しさん
08/02/16 13:53:31
動的型でバイトコンパイルのPerlと、静的型でネイティブコンパイルのHaskellを比較して
Perlの方が速いと思うなら、そっちこそ説明が要るだろw

791:デフォルトの名無しさん
08/02/16 14:00:36
え~Haskellって、ネイティブコンパイルしてるのか。それすら知らなかったわw
インタプリタだとばかり思ってた。

792:デフォルトの名無しさん
08/02/16 14:10:08
両方可能だがね

793:デフォルトの名無しさん
08/02/16 14:34:52
インタプリタあるんだ、知らんかった
コンパイルしなくてもCGIとして使えるのかな 調べてみるか

794:デフォルトの名無しさん
08/02/16 14:39:19
あるかどうかは知らんが、可能ではあるだろう

795:デフォルトの名無しさん
08/02/16 14:44:38
runghcとかrunhugsとかあるけど、インタプリタをサーバに導入するほうが返って面倒な気もする

796:デフォルトの名無しさん
08/02/16 17:15:57
>>793
可能だよ

797:デフォルトの名無しさん
08/02/16 23:00:27
Haskellまだかじった程度だけど、参照透明性がなにかハッピーにしてくれるの?
やろうと思えば、既存の言語でも出来るわけで。言語的に制約がかかっているか
どうかでしょ。「言語的に制約がかかる」というのは、入門者にとってしかメリット
はないよ。

遅延評価も*ほぼ*使わない。無限計算なんてやらんよ?

こんなんで、なんで既存言語から乗り換えるの?俺が、まだHaskellよくわかっていない
だけ?

798:デフォルトの名無しさん
08/02/16 23:01:19
あげ

799:デフォルトの名無しさん
08/02/16 23:07:18
俺も初心者だけど、参照透明性の重用性がよくわからない。

つか、結局はunsafeなんとかで参照透明性をくずしてんでしょ?


800:デフォルトの名無しさん
08/02/16 23:08:04
ちなみにクソリストなんて採用するのはやめてくれ

801:デフォルトの名無しさん
08/02/16 23:08:40
>>797
C++ が参照透明な言語だって知ってた?

802:デフォルトの名無しさん
08/02/16 23:10:00
>>801
信じられない。あふぉかw

俺が、無知なら教えてくださいw

803:デフォルトの名無しさん
08/02/16 23:10:31
>>797
お前、今日のRuby勉強会に行ったやつだろ?

なぜ関数プログラミングは重要か
URLリンク(www.sampou.org)

804:デフォルトの名無しさん
08/02/16 23:11:05
参照透明性って、再代入できないってことだよな(間違ったら訂正してくれ)
C++は再代入できる、とおれは思ってるがw

805:デフォルトの名無しさん
08/02/16 23:12:01
>>803
Rubyはすきだが、そいつじゃない。というか、今日一日ひきこもってたしなw

806:デフォルトの名無しさん
08/02/16 23:12:04
>>799
unsafeを使うときは注意が必要である
いつ実行されてもプログラムに矛盾が発生しないことがはっきりしない限り使うべきではない

807:デフォルトの名無しさん
08/02/16 23:12:29
式と値が一対一に対応していること

808:デフォルトの名無しさん
08/02/16 23:16:09
Haskellのメリットを説きたいなら>>803のリンク教えるだけで十分じゃねーの?

809:デフォルトの名無しさん
08/02/16 23:16:48
>>802,804
まずはこれを読んでみてくれ。
URLリンク(d.hatena.ne.jp)

これが面白いのは、参照透明は程度問題に過ぎないという
視点を得られる所なんだと思っている。

810:デフォルトの名無しさん
08/02/16 23:18:09
参照透明性なんて飾りだよ
Haskellの魅力は、副作用が禁じられていることじゃなくて、
副作用なんていう扱いにくいものに頼らなくても自然にプログラムを書けることだ

遅延評価は大いに使う
「ほぼ使わない」なんて思えるのはHaskellに慣れてないだけだ
例えば、C言語の典型的なfor文の使い方
for(T i = init; cont(i); i = next(i)) use(i);
を、Haskellで自然に書き直すと
mapM_ use $ takeWhile cont $ iterate next init
になるけど、これは無限リストを使っている

811:デフォルトの名無しさん
08/02/16 23:19:34
>>809
あなたはネタを理解できない人なんですね

812:デフォルトの名無しさん
08/02/16 23:23:05
遅延評価便利だよ。
MLが不便に思えるぐらいだ。

813:デフォルトの名無しさん
08/02/16 23:23:13
>>811
ドッキリとかを真に受けるタイプの人でしょ?
>>809 がネタなんだけどね

814:デフォルトの名無しさん
08/02/16 23:26:29
>>799
unsafeなんとかは、本当は参照透明なのに、コンパイラが参照透明だと見なしてくれない式を書くときに使う
そうじゃない使い方もできるけど、それは邪悪な使い方だ

815:デフォルトの名無しさん
08/02/16 23:28:06
ffi使えばunsafe使わなくてもいくらでも邪悪なプログラムが書けるぜ。

816:デフォルトの名無しさん
08/02/16 23:28:41
HaskellのFFIはめちゃくちゃ楽だからな。
組み込みプログラムもなんのその。

817:799
08/02/16 23:41:48
>>803 >>808

803のリンクは、
「参照透明は関数型言語の魅力としては不適当」と言っているのでは?


818:デフォルトの名無しさん
08/02/16 23:47:33
>>816
オーバーヘッドもあるしメモリも食いまくるから組み込みには全く向かないだろ

819:デフォルトの名無しさん
08/02/16 23:54:08
>>818
関係ない。
組み込み=低リソースという時代は終わったんだよ。
それよりも、たとえばロケットや自動車のような用途では安全性が求められる。

820:デフォルトの名無しさん
08/02/16 23:57:18
>>817
参照透明でなければ遅延評価は役に立たないよ

821:デフォルトの名無しさん
08/02/17 00:00:21
D 言語に遅延評価もどきはあるけどな。

822:デフォルトの名無しさん
08/02/17 00:02:57
遅延評価はテクニックに近いものもあるしな

823:799
08/02/17 00:06:23
>>820
なるほど…。

でも、遅延評価も必ず使うわけではないし、
(IOの時など遅延評価されては困る場合もあるわけですよね?)

なんというか、参照透明そのものの優位性がわからない…。

・コンパイラが作りやすい?
・数学的にみて美しい?

…、いずれも一般ユーザには関係ないですよね…。

824:デフォルトの名無しさん
08/02/17 00:07:34
参照透明性ってデバッグの容易さの点で重要と聞いてるけど。

825:799
08/02/17 00:08:33
>>814
う~ん…。これは正しいのでしょうか?

あくまでも、Haskellは参照透明であって、
そうでないプログラムは邪悪という事ですよね。

826:デフォルトの名無しさん
08/02/17 00:11:43
>>823
参照透明だったら関数の返値をキャッシュできるよ

827:799
08/02/17 00:14:55
>>826
コンパイラの話ですよね…。

828:799
08/02/17 00:16:41
>>824
Haskellのデバッグってむしろ大変そうですけど…。

829:デフォルトの名無しさん
08/02/17 00:18:15
>>827
完全にキャッシュできればプログラマはわざわざメモ化とかのテクニックを使ってプログラミングする必要がなくなる。
・・・とは言うものの、GHCでは完全にキャッシュしているわけではない。

830:デフォルトの名無しさん
08/02/17 00:19:45
>>828
Cのデバッグで一番骨が折れるのが型によるバグ。
Haskellはコンパイルさえ通れば型に関しては完全に矛盾がない。

831:デフォルトの名無しさん
08/02/17 00:20:48
>>823
だから、参照透明性はそんなに重大な特徴じゃないんだって
(利点が無いわけじゃない。コンパイラによる最適化がやりやすい。コードが読みやすい。リファクタリングしやすいetc)
逆に、「参照透明でないこと」(破壊的代入や副作用を認める)にも大して優位性は無いんだ

Haskellにはもっと重要な特徴がたくさんある
動作オブジェクトを利用した入出力とか、代数的データ型+パターン照合とか、型クラスとか、遅延評価とか

832:797
08/02/17 00:25:59
>>830
Haskell の型はステキだと思いますよw

でも、traceとか「デバッグ」は大変そう…。


833:デフォルトの名無しさん
08/02/17 00:29:07
>>831
>参照透明性はそんなに重大な特徴じゃない

そうですよね…。
でも、なんか、かたくなに参照透明性を守ろうとして
余計わかり難くなってる気がするんですよね。

全面的な参照透明性を捨てた方が、
すっきりするのではないでしょうか…?

834:799
08/02/17 00:29:52
>>833 は 799です

835:デフォルトの名無しさん
08/02/17 00:30:17
第15回 Haskellでのデバッグのコツをつかむ
URLリンク(itpro.nikkeibp.co.jp)

836:デフォルトの名無しさん
08/02/17 00:30:34
traceってどういうのを指してるか分からんけど、printfデバッグの類は普通にできる

ただ、HaskellがCよりデバッグしにくいのは事実だと思う
gdbに匹敵する使いやすさのデバッガがまだ無いからだが

>>833
>でも、なんか、かたくなに参照透明性を守ろうとして
>余計わかり難くなってる気がするんですよね。
どの辺でそう感じた?

837:799
08/02/17 00:31:00
ああっ!
>>832 も799です。


838:799
08/02/17 00:35:00
>>836
> printfデバッグの類は普通にできる

そうなんですか?
なんかprintfいれるとバグが再現しないとか多そうですが…。


> どの辺でそう感じた?

IOモナドww
参照透明性を捨てれば
もっとステキな実装がありそうじゃないですか?

839:デフォルトの名無しさん
08/02/17 00:38:46
参照透明性を確保するために導入したんだから
本末転倒だじょ

840:デフォルトの名無しさん
08/02/17 00:41:05
俺はIOモナド大好きなのでその気持ちは良く分からん
例え参照透明性を捨ててもIOモナドは使いたい

841:799
08/02/17 00:41:50
>>839
ん?
いや、だから、参照透明性に固執するから、
IOモナドなんて理解しにくい方法で実装してるんでしょ?

842:デフォルトの名無しさん
08/02/17 00:43:33
参照透明性を実現する完全に純粋な関数型言語を作るのが
Haskell の1つの目標だったんじゃないのか?

843:デフォルトの名無しさん
08/02/17 00:50:41
IOモナド、というかIO動作の考え方は多少とっつきにくいけど、分かってしまえば簡単なことだし、
副作用を使った入出力よりずっとまともだと思う
それから、遅延評価の言語で素朴に副作用を使うと実行順が制御困難になるけど、
IO動作ならこの問題がない

>>842
だろうな
でも言語のユーザーにとってはそんな目標はどうでも良い

844:デフォルトの名無しさん
08/02/17 00:51:38
参照透明性が要らないというなら OCaml とか他の言語使えばいい。
それだけだと思うぜ。

845:デフォルトの名無しさん
08/02/17 01:00:20
>>844
その議論はおかしい
Haskellの特徴は参照透明性だけじゃない
デフォルトの遅延評価も型クラスもIOモナドも$演算子もOCamlには無い
参照透明性なんてどうでも良いという奴にでも、Haskellを使う理由はいくらでもある

846:デフォルトの名無しさん
08/02/17 01:09:14
じゃあ、参照透明性の無いHaskell に相当する言語を作ったらいいんじゃね。

847:799
08/02/17 01:12:57
>>840
そうなんですか…。
結局、慣れの問題なんでしょうかねぇ…。

848:デフォルトの名無しさん
08/02/17 01:15:01
Haskell では参照透明性をくずすものは trace のみなんだっけ?

849:799
08/02/17 01:15:23
>>846
まさに、そう、思うんですよw

そんな言語があれば、
確実にブレイクするのではないでしょうか?

誰か作って!私はもちろん……ムリ!

850:デフォルトの名無しさん
08/02/17 01:26:25
>>848
unsafePerformIOってのがある

>>849
単に参照透明性のないHaskellならunsafePerformIOを言語の一部として認めれば良いんだけど、
IOモナドを排除するのは難しいと思う
>>843で書いたけど、普通の言語にあるような副作用による入出力は、遅延評価と相性が悪い
実行順を分かり易く制御するには、結局、IOモナドか、Cleanの一意型か、
それに代わる何か新しいメカニズムが必要になる

851:799
08/02/17 01:39:54
>>850

な~るほど!
ひょっとしてunsafePerformIOを使いまくって
>>814 の言う邪悪なIOライブラリを作れば、
Haskellのままでもいいかもしれませんねw




852:デフォルトの名無しさん
08/02/17 01:41:59
もう屁みたいな例をたくさんあげられるのはウンザリだよ。

こうしよう、C(ほかの言語でもいい)からHaskellに乗り換えるために十分な
説得力を持つ実務的な例を1つだけあげてくれ。

853:デフォルトの名無しさん
08/02/17 01:55:30
darcs

854:799
08/02/17 01:55:42
>>852
「実務的」というかどうかはしらないけど、
コンパイラ的な処理には向いてるらしい…。


再帰下降構文解析
URLリンク(ja.wikipedia.org)
HaskellやMLなどの関数型言語での再帰下降構文解析の実装は特に簡単である。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

855:デフォルトの名無しさん
08/02/17 02:00:39
> HaskellやMLなどの関数型言語での再帰下降構文解析の実装は特に簡単である。
っていうのはウソっていうのはどっかでみたなw

856:デフォルトの名無しさん
08/02/17 02:06:37
>>854
実際、言語処理系には向いてる。
構文解析だけじゃなく、コンパイル過程での構文木の操作とかに
代数的データ型とパターンマッチがぴったりハマってかなり綺麗に書ける
(MLも同様。代数的データ型じゃなくてバリアントという名前だけど)。

言語処理系は、基本的にツリーの変形みたいな
I/Oを伴わない数学的な処理が多いから、という理由づけもできるかな。

857:799
08/02/17 02:08:10
Haskellというか、関数型言語の魅力としては、
>>803 のリンク先を読めばかなり納得できると思う。

858:デフォルトの名無しさん
08/02/17 02:16:57
>>848
いいえ

859:デフォルトの名無しさん
08/02/17 02:23:46
Haskellの言語仕様にunsafeとかFFIとかってあったっけ?
GHCの仕様じゃないの

860:デフォルトの名無しさん
08/02/17 02:27:47
>>859
FFIはHaskell 98への追補
URLリンク(www.cse.unsw.edu.au)
unsafePerformIOも入ってる

861:デフォルトの名無しさん
08/02/17 02:29:45
じゃあ、Haskellは純潔を失ったというわけだ

862:デフォルトの名無しさん
08/02/17 08:36:34
ハードリアルタイムアプリはHaskellでは無理

863:デフォルトの名無しさん
08/02/17 09:30:28
実時間要求とメモリを直接利用するアプリケーション以外はHaskellでおk

864:デフォルトの名無しさん
08/02/17 11:58:51
>>863
できるだろ
URLリンク(www.haskell.org)

865:デフォルトの名無しさん
08/02/17 12:01:27
仮想メモリとかOS必須じゃn

866:デフォルトの名無しさん
08/02/17 18:47:44
Haskell (International Computer Science Series) (ペーパーバック)
Simon Thompson (著)
# ペーパーバック: 528ページ
# 出版社: Addison Wesley; 3Rev Ed版 (2008/9/15)
# 言語 英語, 英語, 英語
# ISBN-10: 0201882957
# ISBN-13: 978-0201882957
# 発売日: 2008/9/15

今度こそ発売?

867:デフォルトの名無しさん
08/02/18 18:08:34
参照透明性を保証しないと、グラフ簡約が使えなくね?

868:デフォルトの名無しさん
08/02/18 18:18:32
使えなくはないと思うが、何で?

869:デフォルトの名無しさん
08/02/18 20:15:31
>>642
データ構造とアルゴリズムをまとめるだけなら、それこそ関数型言語の得意分野だし、
手続き型の世界でも、メッセージメタファって何それ、なgeneric programmingが幅を利かせている。
その分なおさら、状態と手続きをまとめるSmalltalk的なオブジェクト指向が
影響力を増しているように思う。
>>654のAlan Kayの言葉は、実行順序への依存性が下がること
(これはメッセージメタファ、イベント駆動から自然に出てくる)と、
参照透明という意味で状態を全く持たないことを(故意に?)混同している。

870:デフォルトの名無しさん
08/02/19 02:47:18
ハードウェアリアルタイム処理って言葉にすれば
Haskellはかなりいけそうな感触なんだけどなぁ

871:デフォルトの名無しさん
08/02/19 10:02:24
>>868
形式的な表現が同じでも、値が同じことの保証がなくなるから。

872:デフォルトの名無しさん
08/02/19 10:36:55
>>871
副作用を入れるなら当然それは覚悟の上じゃないのか

873:デフォルトの名無しさん
08/02/19 12:45:42
>>872
副作用を入れてもいいのは、値がユニット型の関数だけにしないと破綻するだろ。

874:デフォルトの名無しさん
08/03/09 07:06:26
↓この暗号が解けたら初心者卒業と言えるでしょうか?
main = getArgs >>= putStr . flip id "\n" . foldr (.) id . map (showHex . read)

URLリンク(haskell.g.hatena.ne.jp) を少し改変

875:デフォルトの名無しさん
08/03/09 10:02:11
>>874
暗号に見えていたのが、何の変哲もないプログラムとして認識できるようになったら卒業だな。

876:874
08/03/09 19:04:29
>>875
そうですか…
1日がかりで解けたので初心者卒業かと思ったのですが…orz

何の変哲もないプログラムに見えるように精進しますw

877:デフォルトの名無しさん
08/03/09 23:43:38
何の変哲もないように見える必要はないと思うが解くのに1日がかりはまだ初級者の域か。

878:デフォルトの名無しさん
08/03/13 21:20:39
悩むところが見当たらん

おれはもうだめだ

879:デフォルトの名無しさん
08/03/13 21:26:04
flip id "\n"が悩むところじゃないか?
なぜ($"\n")と書かないんだろう

880:デフォルトの名無しさん
08/03/14 13:47:26
Prelude> ($ "789") $ ($ (($ "456") $ ($ "123") $ (++))) $ (++)
"123456789"

スタックマシンみたいだ(w

881:デフォルトの名無しさん
08/03/18 18:48:31
便利だなこれ
\a -> hoge a 4 ()
flip (flip hoge 4) ()
($ ()) . ($ 4) . hoge

882:デフォルトの名無しさん
08/03/19 16:27:19
>>881
ああ、そうやってカリー化できるんだ。目から鱗が落ちたよ。


883:デフォルトの名無しさん
08/04/12 21:48:42
引く手あまたのプログラミング言語は?
URLリンク(slashdot.jp)
---
Java(16479件)、C++(8080件)、C#(7780件)、JavaScript(6749件)、
Perl(5710件)、PHP(2641件)、Python(1408件)、COBOL(1207件)、
Ruby(769件)、Lisp(33件)といった感じらしい。

とりあえずJavaとC/C++/C#、あとJavaScriptを覚えれば、
当分仕事には困らないようである。COBOLのしぶとさも目立つ。

ちなみにHaskellやOCamlの求人は10以下だったそうだ。
---

884:デフォルトの名無しさん
08/04/19 00:45:19
仕事でプログラムやってるやつなんて
この板にいるの?

885:デフォルトの名無しさん
08/04/19 01:39:26
ええっ?ほとんどプログラム関連の人じゃないの?


886:デフォルトの名無しさん
08/04/19 01:41:22
プログラム関連の研究を仕事でやってる人はいるかもしれないが

887:デフォルトの名無しさん
08/04/24 00:13:42
この「板」にはいくらでもいるだろう>仕事でプログラムやってるやつ
このスレに限れば、仕事と直で結びつきにくい言語かもしらんけど

でも仕事でプログラムやる傍ら、趣味や素養のためにHaskell弄ってる奴も珍しくはないんじゃなかろうか

888:デフォルトの名無しさん
08/05/03 18:08:15
俺は研究職だが仕事でHaskell使ってる。

889:デフォルトの名無しさん
08/05/25 22:21:03
はじめましてAranskファンクラブです。
皆さんはAranskをご存知でしょうか?
最近ネット社会において急速に発言力を増しつつある
集団です。
本家:URLリンク(homepage3.nifty.com)
ミラーサイト:URLリンク(www.geocities.jp)
日本語Blog:URLリンク(aransk.cocolog-nifty.com)
英語もどきBlog:URLリンク(d.hatena.ne.jp)ここまでがAransk Officialsです。
(上記以外にも2ちゃんねるのプログラム板にAransk専用スレが
立っていますが、これはAranskとは何のつながりもありません。)
上記の2ちゃんねる、yahoo掲示板に精力的に意見を
書き込むと同時に自らのサイトの更新も頻繁に
行っています。
驚いたことに、あらゆる場所で人気が「ありません。」
その人気の無さをこのBlogで究明してみるつもりです。
ご興味ある方は是非ご参加下さい。

890:デフォルトの名無しさん
08/05/25 22:30:18
\yってyを含まないって意味だっけ?

891:デフォルトの名無しさん
08/05/25 23:10:13
Haskellの\はlambda
\y -> e で、yからeへの関数

892:デフォルトの名無しさん
08/06/05 18:49:53
逆ポーランド記法で日本人に優しいとか言ってみるRPHaskellとか作って

893:デフォルトの名無しさん
08/07/21 10:56:30
「初心者のためのプログラミング言語ガイド」スレに
Haskellを狂信的に勧めるやつが現れてスレがめちゃくちゃに。

894:デフォルトの名無しさん
08/07/21 19:56:00
>>893
信者と信者っぽく振る舞ってネタにしてる奴と2種類いるようだな。

895:デフォルトの名無しさん
08/09/12 21:26:02
Haskellの入門書は、ふつうのHaskellプログラミングでおk?

896:デフォルトの名無しさん
08/09/12 21:30:22
>>895
WEBが一番

ここが一番わかりやすいぞ
URLリンク(www.sampou.org)

897:デフォルトの名無しさん
08/09/12 23:45:22
>>896
マジか。本買おうかずっと迷ってたんだ。サンクス。これでやってみるよ。
LL Futureで見たんだけどHaskellって並列プログラミングの強さはどんなもんでしょう?

URLリンク(www.nicovideo.jp)

898:36 ◆K0BqlCB3.k
08/09/13 00:50:59
>>897
現在開発中で一部は使用可能
URLリンク(hackage.haskell.org)

899:デフォルトの名無しさん
08/09/13 02:18:36
Erlangにすればいいんでない?

900:デフォルトの名無しさん
08/09/17 01:21:22
>>897
本の方がわかりやすいと思うがWebの方を読んで理解できるレベルなら
それでいいと思う。お金かかんないし。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch