2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2006/11/07(火) 21:24:26
haskell.org
http://www.haskell.org/

日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
http://shidot.dyndns.org/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/

関連スレは>>2
関連書籍は>>3

・2chの仕様により、行頭の半角スペースは表示されません。
 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。

2 :デフォルトの名無しさん:2006/11/07(火) 21:25:26
関連スレ
・関数型言語Part IV
 http://pc8.2ch.net/test/read.cgi/tech/1083649982/
・【数学者】Haskellはクソ言語【オナニー】
 http://pc8.2ch.net/test/read.cgi/tech/1128011645/
・純粋関数型言語Concurent Clean
 http://pc8.2ch.net/test/read.cgi/tech/1075629340/
・関数型言語ML(SML, OCaml, etc.), Part 4
 http://pc8.2ch.net/test/read.cgi/tech/1133003340/
・((Common Lisp) (Scheme) :Part 15)
 http://pc8.2ch.net/test/read.cgi/tech/1151025773/
・【入門】CommonLispその2【質問よろず】
 http://pc8.2ch.net/test/read.cgi/tech/1140012484/
・Emacs Lisp 2
 http://pc8.2ch.net/test/read.cgi/tech/1068467385/

3 :デフォルトの名無しさん:2006/11/07(火) 21:25:57
関連書籍
・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/

4 :デフォルトの名無しさん:2006/11/07(火) 21:42:35
>>1
乙カリー

5 :デフォルトの名無しさん:2006/11/07(火) 22:47:22
スレタイこっちのがよかったな

【あらいぐま】関数言語Haskell Part6【ハスケル】

6 :デフォルトの名無しさん:2006/11/07(火) 22:58:22
        ∩___∩
        | ノ ,,.    ,,ヽ
       /  ●   ● |  前スレ>996-1000全部もらったクマー
       |    ( _●_)  ミ
      彡、  ,、、|∪| ,,,ノ   
      /   . ヽノ  ヽ
      |  _r'゚lニニニl]_ ____/l    
fニニニニllニニ|  \[ l===ニニl]}||||||||ll]}コl|====iニコ
|l_,,=-'''~  | \... ヽ'''ニ「_,,,l⌒l。__。_]三i三三iF
      | 〈,,/ヽ___)|ll [`ー'

7 :デフォルトの名無しさん:2006/11/07(火) 23:00:57
        ミンナデ ハースケルー♪
          ∧_∧   ∧_∧ ))
        (゙゙ヽ ゚∀゚)') ('(゚∀゚ /゙゙)
      ((  \    / ヽ    /
         ((⌒)  (   )  (⌒))
          ``ヽ_,)  (,__,ノ゙

8 :デフォルトの名無しさん:2006/11/07(火) 23:05:08
いいか、みんな
        (゚д゚ )
        (| y |)

Haskellで勉強すればokと信じていたのに、
いつまでたっても頭がよくならない。
    Haskell ( ゚д゚)  ok
       \/| y |\/

これらをくっつけて
        ( ゚д゚) haskellok
        (\/\/

逆から読むとこれ臭ぁ、というわけだ
        ( ゚д゚) kolleksah
        (\/\/

Haskellやってると、くさくなるということだな
        (゚д゚ )
        (| y |)

9 :デフォルトの名無しさん:2006/11/07(火) 23:20:08
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□■□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□■□□■□□□
□□□■□□□□■□□□□□□□□□□□□□□□□□□□□□□□□□■□□■□□□
□□□■□□□□■□□□□□□□□□■■■□□■□□□□□□□□□□■□□■□□□
□□□■□□□□■□□□□□□□□■□□□■□■□□□□□■■■□□■□□■□□□
□□□■■■■■■□□■■■□□□■□□□□□■□□■□■□□□■□■□□■□□□
□□□■□□□□■□■□□□■□□□■■■□□■□■□□■■■■■□■□□■□□□
□□□■□□□□■□■□□□■□□□□□□■□■■■□□■□□□□□■□□■□□□
□□□■□□□□■□■□□□■■□■□□□■□■□■□□■□□□■□■□□■□□□
□□□■□□□□■□□■■■□■□□■■■□□■□□■□□■■■□□■□□■□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

10 :デフォルトの名無しさん:2006/11/07(火) 23:34:03
前スレの998は死ね


11 :デフォルトの名無しさん:2006/11/07(火) 23:36:56
>>10
     ○ 
     ノ|) 
_| ̄|○ 「L


 ○、
   \、  ○ 
     ヾ \)ヽ
  _| ̄|  <

12 :デフォルトの名無しさん:2006/11/07(火) 23:39:07
  Haskellはじめて挫折して
  (( (`Д´) (`Д´)
   (/ /) (/ /) ))
   < ̄<  < ̄<

  帰ってこないやつがいる
  (`Д´) (`Д´) ))
 (( (\ \) (\ \) 
    > ̄>  > ̄>

 ハイ!!  ハイ!!  ハイ ハイ
.   ( `Д)_(Д´ )
.   ノ ノヽ |  |>
   /  >   < ヽ

     ハイッ!!
   (`Д´)_(`Д´)ノ
   ノ ノヽ |  |
.   ノ  >  < ヽ

  ハイ!あるある探検隊!
   (`Д´)ノ (`Д´)ノ
   <| ヘ|  <| ヘ|
    <    <

   あるある探検隊!
  ヽ(`Д´)ヽ(`Д´)
.    |,、 |>.  |,、 |>
      >   . >

13 :デフォルトの名無しさん:2006/11/07(火) 23:43:04
    ∧__∧      
    (`・ω・´)    Haskellについて語るスレではござるのか? 
   .ノ^ yヽ、     
   ヽ,,ノ==l ノ      
    /  l |       
"""~""""""~"""~""


14 :デフォルトの名無しさん:2006/11/07(火) 23:44:18

                             、ミ川川川川川彡,,
      え!?                   ミ          彡
                  l⌒l____l⌒三 ク .ハ  こ   三
         ∩___∩ /          三 マ  ス  こ   三
        /ノ      ヽ/ ●    ●  三  l  ケ は  三
        | ●   ●  i'   (_●_,,)  U .三  ? ル .ひ  三
        | (_●_)    彡   l U |    三     の  ょ  三
        ミ l U l  u   l    ヽ,_,,ノ     三    ス  っ  三
         >ヽ,,ノ     ゝ        ,,,;:三    レ  と   三
        /       /''      c-、 ,,,;;::::三       し  .三
       (二つ      /      (   ̄ ̄彡      て   三
         〉      ( ̄ ̄'')   `--──彡         .ミ
         /   、    >-─''          '川川|l|l |l|川川ミ

15 :デフォルトの名無しさん:2006/11/07(火) 23:45:05
       ____)__
     ,. ´     `  ` 、
   ./        _   _ \
  /        _   ̄  _ ヽ
  /イィィ,,.,.,.,.,.,      ̄ ̄    !
 f/ノノノノノノノ  ヘ.__ j  jノ__ノ
 |///////   _ (__ ゚_>` __( ゚_イ
 .!|.|i/_^ヽ|_'___r⌒ y'  ヽ^)|
  !|| fニ> ::::::  `ー'゙ (_`___)ノ
   ヽ.ニ` :     /_ノ/川! /      よし・・・・・
    __ノ 、    / ヾ---'´ ノ
 __ノ \l `   ____,/
       \    ノ リ.|`ー--
        \   .//
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/ , , , , , ,         __ ___` 、
,//////ィ                 ヽ.
ノノノノノノノl    /\        , -、 !
///////l   ",二ヽ.二_ヽ.  l  lノ_へノ!
//////ノ       (_jリ ゙T`’ノ / (rリ`y゙
ソ´,-、\|   -` ー--‐ "  __{ ー-'{    
| ,f^ソ |____/ ゙̄ヾ"´  \^ヽ. |
| に(        l    j ,..   ヽ |.|    俺もハスケる!!
\` ' j       `ー-‐' イ_ `  ノ'" i
  ゙‐-'        /,. ‐-、/TTT||  ノ
   _}       / |----二ニフ ノ
  人\ ヽ.        ! r'二ヽ / /
_「  \\ `  、   ` ̄ ̄/
     \\        Ti"
       \\     ノ | |\

16 :デフォルトの名無しさん:2006/11/07(火) 23:46:26
    \   ∩─ー、    ====
      \/ ● 、_ `ヽ   ======
      / \( ●  ● |つ
      |   X_入__ノ   ミ   関数言語なんかに釣られ、ク、クマ―――――!!
       、 (_/   ノ /⌒l
       /\___ノ゙_/  /  =====
       〈         __ノ  ====
       \ \_    \
        \___)     \   ======   (´⌒
           \   ___ \__  (´⌒;;(´⌒;;
             \___)___)(´;;⌒  (´⌒;;  ズザザザ
                          (´⌒; (´⌒;;;

17 :デフォルトの名無しさん:2006/11/07(火) 23:49:04




------ 以上テンプレ -----



18 :デフォルトの名無しさん:2006/11/08(水) 01:20:58
あらいぐまはPascalにくれてやれ也

19 :デフォルトの名無しさん:2006/11/08(水) 12:10:07
Aranskが復活したの?

20 :デフォルトの名無しさん:2006/11/08(水) 20:19:29
Aranskだけが馬鹿なわけじゃないと思うよ

21 :デフォルトの名無しさん:2006/11/11(土) 19:17:16
やっぱりweb上に日本語で読める入門文書の一つくらい
あった方がいいんだろうか。

22 :21:2006/11/11(土) 19:22:16
これだけじゃ意味不明だな。
「いっこうにHaskellがはやらないのを鑑みるに」を頭に付け加えてくれ。

23 :デフォルトの名無しさん:2006/11/11(土) 22:45:22
formal semanticsが整備されれば利用者も100万人くらい増えるはず。

24 :デフォルトの名無しさん:2006/11/11(土) 23:08:16
formal semanticsがあると何が嬉しいの?

25 :デフォルトの名無しさん:2006/11/12(日) 00:02:53
バグに遭遇したとき、プログラムのバグなのか処理系のバグなのかが明確になる

26 :デフォルトの名無しさん:2006/11/12(日) 00:20:50
>>25
自然言語で与えられるsemanticsではだめなのか?

それに、その用途に使うならHaskellで定義できないあらゆる関数(foreign importされたものとか)の
semanticsが必要になると思うんだが、それも要求しているの?

27 :デフォルトの名無しさん:2006/11/12(日) 00:43:00
Rubyやperlだって言語仕様 = 実装だしな。
実用的なスクリプト言語にsemanticsなど不要。

28 :デフォルトの名無しさん:2006/11/12(日) 00:55:23
最近のJavaのGenericsのバグ(?)も形式的意味論があれば防げたかもしれない。
http://d.hatena.ne.jp/sumii/20060928/1159403268


29 :デフォルトの名無しさん:2006/11/12(日) 10:23:05
形式的意味論なんて絵に描いた餅ですよ

30 :デフォルトの名無しさん:2006/11/12(日) 11:19:01
Haskellは絵に描いた理想を追う言語ではなかったのか


31 :デフォルトの名無しさん:2006/11/12(日) 11:24:07
>>28
形式的意味論もなにも、コンパイラとランタイムの
キャスト可否の判定が食い違ってるだけじゃん。

コンパイラ作成者がランタイムと違う実装してポカやっただけ。
本来なら A::compareTo(Object o) が呼ばれる。
ちょっとスレ違いですまん。

32 :デフォルトの名無しさん:2006/11/12(日) 11:29:20
JAVA言語は危険だというkとが証明されたんだな


33 :デフォルトの名無しさん:2006/11/12(日) 11:47:52
だな。c++のテンプレートよりかなりシンプルなのにこれだからな。

34 :デフォルトの名無しさん:2006/11/12(日) 12:00:42
>>30
違います。
そもそも理想って何ですか?

35 :デフォルトの名無しさん:2006/11/12(日) 12:14:07
数学者の理想じゃね?

36 :デフォルトの名無しさん:2006/11/12(日) 12:20:50
>>35
だからどんなのが理想なんだよ。
何か目的があってこそ理想があるんだろ?

37 :デフォルトの名無しさん:2006/11/12(日) 12:26:15
いや俺>>30じゃないからよく分からんし。
手続き型言語と比べて数式(数学者の脳内)に近いだろ?
だから数学者にとって理想的な言語。俺はそれくらいの意味で書いた。

38 :デフォルトの名無しさん:2006/11/12(日) 12:31:59
Haskellはもう理想を失った・・・

39 :デフォルトの名無しさん:2006/11/12(日) 13:11:46
実行時効率を犠牲にして言語を単純化しようとしているという点では
十分に理想主義的だと思うが。
文字列がコードポイントの遅延リストであるのがその一例。

40 :デフォルトの名無しさん:2006/11/12(日) 14:13:38
ただのバイトのリストじゃない?
マルチバイト文字をリストの1要素として扱えてる?

41 :デフォルトの名無しさん:2006/11/12(日) 14:43:59
>>40
Prelude> Char.ord maxBound
1114111

42 :デフォルトの名無しさん:2006/11/12(日) 14:51:05
GHC6.6で、
main = print $ "テスト" !! 1
でもいいか。ソースはUTF-8で。

43 :デフォルトの名無しさん:2006/11/12(日) 15:20:58
>>41
d。内部はUTF-16(的)なのね。

しかし、どうせならUCS4まで扱ってくれれば良いのに。
あんな「思ってたより多かったのでサロゲート作っちゃいました」
とかほざく連中に合わせる必要ないのに・・・。

44 :デフォルトの名無しさん:2006/11/12(日) 15:35:53
>>43
いや、1114111は0x10ffffで、16ビットの範囲を超えていて、
Unicodeの17面を全部表現できる。
UTF-16よりUTF-32に近いはず。

45 :デフォルトの名無しさん:2006/11/12(日) 15:50:10
Unicodeコンソ 2byte固定で全ての文字扱えるようにする。
ISO(10646) すげーな、頑張れ。でも2byteで大丈夫か?
Unicodeコンソ 大丈夫大丈夫

  それぞれ仕様を策定することになる。(コードポイントはお互い合わせてる)

Unicodeコンソ Unicode(未定義含めて全領域は0..0xFFFF)定義しますた。
Unicodeコンソ 実装は固定長2byte(Unicode,のちのUTF-16である)です。

ISO(10646) UCS定義(未定義含めて全領域は0..0x7FFFFFFF)しますた。
ISO(10646) 実装は可変長(UTF-8)と固定長4byte(UCS-4)です。

  少しして

Unicodeコンソ (やっべ)
Unicodeコンソ 0xFFFFで足りませんですた。サロゲートペアで拡張しますね。
Unicodeコンソ UTF-16にサロゲートの仕様を追加しますた。
Unicodeコンソ それと固定長(4byte)のUTF-32用意しますた。4byteだけど0x10FFFF以上は使うなよ。
Unicodeコンソ おまけ つ[0x10FFFFまでのUTF-8]
Unicodeコンソ というわけでよろしく。

ISO(10646) 0x10FFFFまでコードポイントを追加しますた。実装は変わりません。

  Unicode対応と言いつつ0xFFFFまでしか扱えないソフトが出てくる ← 今ここ


46 :デフォルトの名無しさん:2006/11/12(日) 15:54:18
追記:今のUTF-16は可変長な。UTF-32と同じく0x10FFFFまで扱える。

47 :デフォルトの名無しさん:2006/11/12(日) 16:07:08
> UTF-16よりUTF-32に近いはず。
確かにイメージ的には32の方が近いね。実際どういう実装なのかは知らないけど。
内部表現は100進数だったりして・・・。

48 :デフォルトの名無しさん:2006/11/12(日) 18:34:50
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=RHG%C6%C9%BD%F1%B2%F1%3A%3A%C5%EC%B5%FE+Revolution%3A%3A%A4%D5%A4%C4%A4%A6%A4%CEHaskell%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0
># p.269 kind の訳語は「類」なのか、「種」なのか?
>
>    * ふつけるで使っている「類」は、nobsun の訳を元にしているんだろうけど……
>          o 数学辞典を調べて、出てきた用語を使ったような
>                + 「類」は "Class" じゃないの?
>    * Clean では「種」
>    * 型理論の方面では「種」が使われている
>    * というわけで、以後は「種」を使うことにしましょう

このスレの住人の意見を聞きたいんだが、kindの訳語として「類」と「種」のどっちを使うべき?

49 :デフォルトの名無しさん:2006/11/12(日) 18:59:42
種は「根源的には同じもの」(亜種,など)で
類は「似た性質/特徴を持つもの」(哺乳類,など)と個人的に思っている。

で、kindの "* -> *" と "*" の区別とかは
「似た特徴」とも言えるが、それ以上に「根源的な部分」を
表しているような気がするので「種」に1票。

属とか科とか似たのもあるけど気にしない。

50 :デフォルトの名無しさん:2006/11/13(月) 00:13:44
訳を当てずにkindって言うようにしてる

51 :デフォルトの名無しさん:2006/11/16(木) 20:28:17

Haskellでオセロゲーム講座まだー?


52 :デフォルトの名無しさん:2006/11/16(木) 21:02:53
>>48
ふだんごついのに
数学者のかわいい一面ですね。
厳密さが快感だから悩むのでしょうか?
でも、悩むの楽しいのでしょうね^^

53 :デフォルトの名無しさん:2006/11/16(木) 21:08:18
頭わるすぎてワラタ

54 :デフォルトの名無しさん:2006/11/18(土) 23:17:47
haskell全然わかんねー

i = 1
main = print $ myPlus i
myPlus :: a -> a
myplus j = j + j

これが動かないのはなんで?

55 :デフォルトの名無しさん:2006/11/18(土) 23:34:02
エラーメッセージは?

56 :デフォルトの名無しさん:2006/11/18(土) 23:37:19
- myplus
+ myPlus

57 :デフォルトの名無しさん:2006/11/18(土) 23:38:49
- myPlus :: a -> a
+ myPlus :: Num a => a -> a

58 :54:2006/11/19(日) 00:24:59
>>55-57

レスサンクス。コンパイル通ったよ。
でもなにこの「Num a => 」って奴は。haskellは簡単なことが難しいって本当だな。
とりあえず調べてみる。ありがと。

59 :デフォルトの名無しさん:2006/11/19(日) 03:00:01
エラーメッセージを書こうね

60 :デフォルトの名無しさん:2006/11/20(月) 07:04:54
諸君、議論したまえ

61 :デフォルトの名無しさん:2006/11/20(月) 20:44:20
型システムについての解説ありますか?
モナドはたくさんあるけど

62 :デフォルトの名無しさん:2006/11/20(月) 21:03:22
諸君、議論したまえ

63 :デフォルトの名無しさん:2006/11/20(月) 21:08:38
>>62
ネタを出してくれ

64 :デフォルトの名無しさん:2006/11/20(月) 21:12:44
お題: 巨大になりすぎたghcのスリム化について

65 :デフォルトの名無しさん:2006/11/20(月) 21:25:36
>>61
http://homepages.inf.ed.ac.uk/wadler/topics/type-classes.html
http://haskell.readscheme.org/lang_sem.html
http://www.cse.unsw.edu.au/~chak/haskell/ghc/comm/

読み終えたら概要を報告すること.それが君の使命.

66 :デフォルトの名無しさん:2006/11/20(月) 21:55:44

GHCいれることにしたからWinHugsをアンインスコしようとした
そしたらダイアログでて以下のようなメッセージ
 ↓↓↓
=============================================================================================
C:\PROGRA~1\WinHugs\UNINST~1.EXE
C:\PROGRA~1\Symantec\S32EVNT1.DLL インストール可能なデバイスドライバはDLL初期化に失敗しました。
アプリケーションを終了するには[閉じる]を選んでください。
=============================================================================================

アンインスコ不可能になた
この前NIS2006を根こそぎ削除したのが原因のようなんだけど
こういう場合どうやったら引き続きアンインスコできんの?


67 :デフォルトの名無しさん:2006/11/21(火) 00:20:35
ところで文字列"-123.456"を数値-123.456に変換する関数ってあったっけ?

68 :デフォルトの名無しさん:2006/11/21(火) 00:25:44
これ?
read "-123.456" :: Double

69 :66:2006/11/21(火) 01:19:16
ヘルプ!

70 :デフォルトの名無しさん:2006/11/21(火) 05:43:13
>>606
Symantecとか関係なくWinHugsはなぜかアンインストールできない。
なのでさくっとスクリプトを書いてみようと思ったらひどい目にあった。
なんでマルチバイト文字とCharの相互変換もできないんだよ…

ttp://up.uppple.com/src/up0496.txt
FFIを使う羽目になったので、GHCでコンパイルする必要がある。
あと無保証。BIOSが消し飛んでも関知しないから念のため。

71 :デフォルトの名無しさん:2006/11/21(火) 07:09:34
>>66
それを すてるなんて とんでもない!

72 :66:2006/11/21(火) 21:39:06
>>77
うそーん
そんな不具合あんのかよw
公式ではまだその対策でてないの?

73 :デフォルトの名無しさん:2006/11/21(火) 23:20:19
>>72
http://hackage.haskell.org/trac/hugs/ticket/42
認識はされてるけど対策はまだみたいだ。

74 :デフォルトの名無しさん:2006/11/21(火) 23:27:38
□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□□□□■□□■□□
□□■□□□□□■□□□□□□□□□□□□□□■□□□□□□□□□■□□■□□
□□■□□□□□■□□□□□□□□□□□□□□■□□□□□□□□□■□□■□□
□□■□□□□□■□□□□□□□□□■■□□□■□□□□□□□□□■□□■□□
□□■□□□□□■□□□□□□□□■□□■□□■□□■□□■■□□■□□■□□
□□■■■■■■■□□■■■■□□■□□□□□■□■□□■□□■□■□□■□□
□□■□□□□□■□■□□□■□□□■■□□□■■□□□■■■■□■□□■□□
□□■□□□□□■□■□□□■□□□□□■□□■□■□□■□□□□■□□■□□
□□■□□□□□■□■□□□■■□■□□■□□■□□■□■□□■□■□□■□□
□□■□□□□□■□□■■■□■□□■■□□□■□□■□□■■□□■□□■□□


75 :デフォルトの名無しさん:2006/11/23(木) 00:35:20

ふつうのHaskellプログラミング買って勉強しはじめた
もう一冊のほうは知らんけど、これわかりやすくていいね


76 :75:2006/11/23(木) 00:35:50
Amazon
http://www.amazon.co.jp/gp/product/4797336021/sr=8-4/qid=1164209589/ref=sr_1_4/250-4437816-3500248?ie=UTF8&s=books

77 :デフォルトの名無しさん:2006/11/23(木) 01:28:03
何がしたいねん

78 :デフォルトの名無しさん:2006/11/23(木) 01:41:12
ひまやねん
スレがのびへんねん

79 :デフォルトの名無しさん:2006/11/23(木) 10:51:46
諸君、議論したまえ


80 :デフォルトの名無しさん:2006/11/25(土) 02:20:39
質問です。
HaskellにDoxygenのようなドキュメント生成のためのツールなどはありますか?

81 :しょしんしゃ:2006/11/25(土) 02:26:37

質問です
GHCとHugsという存在がよくわかりません

Haskellが仕様で、GHCとかHugsが実装環境ってこと?
もしそうなら、仕様ってなに?
どっかにそれをタンマリ書いたPDFとか置いてるの?

『Haskell』ってのはただの説明書?


それともLinuxに例えるならHaskellがカーネルで
GHCやHugsがディストリビューション?

やべぇ、余計わかんなくなってきた


82 :デフォルトの名無しさん:2006/11/25(土) 03:05:44
>>80
Haddock

>>81
>Haskellが仕様で、GHCとかHugsが実装環境ってこと?
そんな感じ。

>どっかにそれをタンマリ書いたPDFとか置いてるの?
http://haskell.org/onlinereport/
http://www.sampou.org/haskell/report-revised-j/ (日本語訳)

83 :デフォルトの名無しさん:2006/11/25(土) 03:09:04
>>82
覗いてみたけど眩暈した

>>81のLinuxの例えはあってるかな?
あってるなら納得する

84 :デフォルトの名無しさん:2006/11/25(土) 03:29:49
Haskellは言語で、Haskell Reportはその定義。
GHCのような各処理系は、この定義に沿ってプログラムを解釈するように作られる。
言い替えると、Haskell ReportはHaskell処理系が満たすべき要件を定めている。

Linuxカーネルはディストリビューションが満たすべき要件を定めたりしないし、
カーネル自身がディストリビューションの一部なので、構造がだいぶ違う。
むしろ、POSIXとLinuxシステムの関係に近い。

85 :デフォルトの名無しさん:2006/11/25(土) 22:50:34
いみわかんねーーー

86 :デフォルトの名無しさん:2006/11/25(土) 23:04:56
どうも>>83自身Linuxカーネルとディストロの区別がしっかりついてないんでは
つーかC++言語だってgccだのMS VC++だのBCCだのいっぱいあって,それで普通じゃん...
HaskellもHugsだのGHCだのいっぱいあるのですぉ

87 :デフォルトの名無しさん:2006/11/25(土) 23:31:43
>>86
一般的なプログラマーならそれで理解できるだろうけど
Javaしか知らんのだよJavaしか!!1

88 :デフォルトの名無しさん:2006/11/25(土) 23:36:49
Javaだってgcjだのjavacだのいっぱいあって…と言いたい所だが、gcjの知名度は低そう…

89 :デフォルトの名無しさん:2006/11/25(土) 23:38:20
うん知らない

90 :デフォルトの名無しさん:2006/11/25(土) 23:48:33
HTMLと各種ブラウザの関係と言った方がわかりやすいんじゃね?
HTML <-> Haskell98
IE,FF,Opera,etc... <-> GHC, Hugs, etc...

91 :デフォルトの名無しさん:2006/11/25(土) 23:55:59
FFッテナニカトオモタ
え、そんな単純なことなのか

92 :デフォルトの名無しさん:2006/11/25(土) 23:57:29
ibmのjavaがあるじゃない

93 :デフォルトの名無しさん:2006/11/26(日) 01:21:32
コマンドライン引数を扱うプログラムってどう書くのでしょうか?
たとえば ghc でコンパイルして
C:\> .\fibonacci.exe 10
55
C:\> .\fibonacci.exe 20
6765
と動作するようなものを書く場合です。
またそれはどのあたりのマニュアルを参照すれば良いでしょうか。

94 :デフォルトの名無しさん:2006/11/26(日) 01:25:00
>>93
hoogleでarg辺りで検索すればgetArgsが出てくる。

95 :デフォルトの名無しさん:2006/11/26(日) 01:28:37
>>93
Haskell98なら
System.getArgs :: IO [String]
階層ライブラリなら
System.Environment.getArgs :: IO [String]

GHCに付属しているライブラリの大部分は
http://www.haskell.org/ghc/docs/latest/html/libraries/
にリファレンスがある。

96 :デフォルトの名無しさん:2006/11/26(日) 01:37:36
Stringってchar型の配列って書いてたけど、これってJavaでもいっしょ?
Javaの本ではそんなの読んだことない

97 :デフォルトの名無しさん:2006/11/26(日) 01:54:37
>>96
そんな大嘘が書いているのはどこですか?
Haskellではcharの配列とStringはまったく違います。

また、Javaではchar[] != Stringです。

98 :デフォルトの名無しさん:2006/11/26(日) 02:12:41
>>97
配列ではなくリスト、と言いたいんだよね?

99 :デフォルトの名無しさん:2006/11/26(日) 02:21:04
Haskell の Array i Char と [Char] はぜんぜん違うデータだし。


100 :デフォルトの名無しさん:2006/11/26(日) 02:24:30

実は、Haskellでは文字列もリストなのです。文字列は文字のリストとして
表現されていて、特別な「文字列」は存在しません。
ですから、リストの処理を覚えれば文字列処理も身につけたことになります。
                           -----ふつうのHaskellプログラミング


101 :デフォルトの名無しさん:2006/11/26(日) 02:24:56
JavaのStringクラスはchar配列をラップしたものだね(ライブラリのソースを見れば分かる)
Haskellの文字列はCharのリスト(これを [Char] と書き表す)
Haskellでは配列とリストは別のデータ型.
関数型言語では大抵は配列よりリストのほうが頻繁に使われる.

102 :デフォルトの名無しさん:2006/11/26(日) 02:28:12
>>97
>>98がアホってこと?

103 :デフォルトの名無しさん:2006/11/26(日) 03:57:26
>>102
何故?

104 :デフォルトの名無しさん:2006/11/26(日) 04:46:57
うお、何かデジャブった

105 :デフォルトの名無しさん:2006/11/26(日) 07:10:26
haskell初心者です。
次のコードは間違っていますか?それとも別の問題でしょうか?

import System.Posix.Files
main = getFileStatus "hoge" >>= (print . isDirectory)

ghciでは、ちゃんと動きました。

hugsで実行しようとすると、次のエラーが出ます。
*** glibc detected *** /usr/bin/hugs: free(): invalid pointer: 0x08f0d120 ***
======= Backtrace: =========
/lib/libc.so.6[0x4a74aefd]
/lib/libc.so.6(cfree+0x90)[0x4a74e550]
/usr/lib/hugs/packages/base/Foreign/Marshal/Alloc.so[0x4ed616]
/usr/bin/hugs[0x80771c6]
/usr/bin/hugs[0x8077bc0]
...


106 :デフォルトの名無しさん:2006/11/26(日) 07:10:40
2chでは、知名度が低い分野のスレほどレベルが高い、という傾向がある。
つまりHaskellはもはやマイナーな分野ではない。

107 :105:2006/11/26(日) 07:11:44
続き
ghcでコンパイルしようとすると、次のエラーが出ます。
t.o: In function `sHY_info':
(.text+0x8a): undefined reference to `unixzm1zi0_SystemziPosixziFiles_isDirectory_closure'
t.o: In function `sHW_info':
(.text+0x106): undefined reference to `unixzm1zi0_SystemziPosixziFiles_getFileStatus_closure'
t.o: In function `Main_main_srt':
(.rodata+0xc): undefined reference to `unixzm1zi0_SystemziPosixziFiles_isDirectory_closure'
t.o: In function `Main_main_srt':
(.rodata+0x10): undefined reference to `unixzm1zi0_SystemziPosixziFiles_getFileStatus_closure'
collect2: ld はステータス 1 で終了しました

OSはFedora Core 6
インストールしているパッケージは、
hugs98-2006.09-1.fc6
ghc66-6.6-1.fc6
ghc-6.6-1.fc6
です。


108 :105:2006/11/26(日) 07:23:22
もうひとつ疑問があります。

次のコードが、hugsでは受け付けられるのに、ghci・ghcでは、
hoge.hs:3:10: parse error (possibly incorrect indentation)
などと、エラーになります。
haskellの言語仕様上、下記の記述は許されないということでしょうか?

main = do if True then putStrLn "t"
**********else putStrLn "f"

但し、半角スペースを記号"*"で置き換えています。


109 :デフォルトの名無しさん:2006/11/26(日) 09:32:45
>>108
仕様上正しいかどうかは知らんけど、もう一個スペース入れればghcで受け付けるようになる。
もしくは、この例ではdoは必要ないから外してしまうとghcでもOK。

ghcではdo構文の中ではthenとかelseはifの開始位置よりも右から始めないとダメって事になってるのかも。

110 :デフォルトの名無しさん:2006/11/26(日) 09:43:25
>>107
必要なライブラリをリンクさせてないってことでしょ。
単に ghc hoge.hs としたらhoge.hsだけをコンパイルして標準のライブラリとリンクさせて実行ファイル作るけど、
import System.Posix.Filesをしてるから標準のライブラリには含まれてないものを必要としてて、
それが足りないというエラーが起きてる。

-packge 〜 というオプションをつけて手動で必要なものを指示する方法もあるけど、
--makeオプションを使った方が必要なものを全部自動的に処理してくれるから楽。
ghc --make hoge.hs

111 :105:2006/11/26(日) 11:37:13
>>109
書き換えれば動くのは確かめたのですが、
処理系によって挙動が異なるので、仕様ではどうなっているのか気になっています。

>>110
ありがとうございます。
たしかに、ghcに--makeオプションを指定すると、うまくコンパイルできました。

hugsでは、このライブラリは利用できないのでしょうか?
hugsの実行時に+wオプションを使い、読み込まれるファイルを確認しました。
結果、メッセージは
...
Hugs session for:
...
/usr/lib/hugs/packages/base/System/Posix/Types.hs
/usr/lib/hugs/packages/base/System/Posix/Internals.hs
/usr/lib/hugs/packages/unix/System/Posix/Files.hs
hoge.hs
Type :? for help
Main> main
*** glibc detected *** hugs: free(): invalid pointer: 0x0965eb60 ***
======= Backtrace: =========
/lib/libc.so.6[0x4a74aefd]
/lib/libc.so.6(cfree+0x90)[0x4a74e550]
/usr/lib/hugs/packages/base/Foreign/Marshal/Alloc.so[0xd67616]
hugs[0x80771c6]
...
/lib/libc.so.6(__libc_start_main+0xdc)[0x4a6faf2c]
hugs[0x8049c51]
======= Memory map: ========
...4a8アボートしました
となり、異常終了してしまいます。

112 :デフォルトの名無しさん:2006/11/26(日) 12:55:55
if は else を省略してはいけない。仕様上、そう定義される。

特定のときにだけ実行するような場合は Monad (または Control.Monad) を
インポートして when か unless を使え。


あと和訳されてるんだし疑問を持ったら自分で仕様を読めば。
http://www.sampou.org/haskell/report-revised-j/exps.html


113 :デフォルトの名無しさん:2006/11/26(日) 13:15:46
>>111
仕様が気になるなら仕様書を読むしかない。

do構文が絡んだ場合のインデントについてまとめてあるのを見つけた。
http://en.wikibooks.org/wiki/Haskell/Indentation

114 :デフォルトの名無しさん:2006/11/26(日) 13:16:47
>>108
if..then..elseは単なる式であって、doの文にするなら一文に収めないといけない。
そのコードだとif...then...とelse...で二文に分かれているので、エラーになるのが正しいはず。
手元のHugs May 2006では
ERROR "test.hs":2 - Syntax error in expression (unexpected `;', possibly due to bad layout)
というエラーになった。

115 :114:2006/11/26(日) 13:30:35
なぜかWindows版だと通るな。
Hugsのバグかも。

116 :デフォルトの名無しさん:2006/11/26(日) 13:34:21
>>105
明らかにライブラリまたはHugsの問題。コードは悪くない。

117 :93:2006/11/26(日) 17:50:31
>>94-95
ありがとうございました。


118 :デフォルトの名無しさん:2006/11/26(日) 17:56:23
ttp://oss.timedia.co.jp/show/Haskell/Emacs
に書かれている設定で Emacs の haskell-mode を入れてみたんですが、
インデントが正しくなりません。たとえば Yet Another Haskell Tutorial
の p.32 の例を入力すると、

module Main
  where

   import IO

main = do
 hSetBuffering stdin LineBuffering
        putStrLn "Please enter your name: "
             name <- getLine
                 putStrLn ("Hello, " ++ name ++ ", how are you?")

となってしまいます。(半角スペース 2 つを全角空白文字に変換しています。)
何か設定がおかしいんでしょうか? それともこういうもの?


119 :デフォルトの名無しさん:2006/11/26(日) 19:05:30
tabを何回か叩くとインデント位置の候補をローテートしない?

120 :105:2006/11/26(日) 19:14:27
>>112-116
ありがとうございます。


121 :デフォルトの名無しさん:2006/11/26(日) 23:15:09
圏論やりながらHaskellやっているのって主にどこの大学でやっているんですか?
それともみんな個人レベルで圏論とHaskellをやっているんですかね・・・

122 :118:2006/11/26(日) 23:59:42
>>119
おおー、なるほど。ありがとうございました。

123 :デフォルトの名無しさん:2006/11/27(月) 00:24:10
>>121
いろんなところでやってるでしょ。代表的なのはオックスフォードだけど。

124 :デフォルトの名無しさん:2006/11/27(月) 00:44:00
http://groups.google.co.jp/group/categories/browse_thread/thread/849f8c9e9fad74c4/fe103333ccb23843
orz

125 :デフォルトの名無しさん:2006/11/27(月) 01:04:05
うぉ。
ていうかこれ去年か。

126 :デフォルトの名無しさん:2006/11/27(月) 01:07:32
京都産業大学か

127 :デフォルトの名無しさん:2006/11/28(火) 17:33:23
本物のプログラマをHaskellを使う

128 :デフォルトの名無しさん:2006/11/28(火) 18:48:09
本物のプログラマでHaskellを扱き使う。

129 :デフォルトの名無しさん:2006/11/28(火) 20:13:56
あなたをHaskellです


130 :デフォルトの名無しさん:2006/11/28(火) 20:20:06
目的語指向言語のスレはここですか?

131 :デフォルトの名無しさん:2006/11/28(火) 23:56:32
Haskellがすでに失敗している10の理由
ttp://d.hatena.ne.jp/m-a-o/20061123#p2

132 :デフォルトの名無しさん:2006/11/29(水) 00:01:57
>>131
HelloWorldしか書けない初心者の俺がみても
10個中10個が失敗した理由になってねーよw

人気でない10の理由ってんなら少しはわかるが



133 :デフォルトの名無しさん:2006/11/29(水) 00:07:45
元ネタを貼らないのは公平じゃないと思った
ttp://www.audioholics.com/news/editorials/10reasonsHDDVDsfailed.php
ttp://tabesugi.net/memo/cur/b2.html#192215

134 :デフォルトの名無しさん:2006/11/29(水) 00:58:53
ttp://www014.upp.so-net.ne.jp/tetryl/llw2004/ll-samurai.txt

> 残念!
> 「Hello worldさえブラックボックス」
> 斬り

古いネタだけど吹いたw

135 :デフォルトの名無しさん:2006/11/29(水) 02:08:20
>>134
ごめん全部読んだけど、面白くなかった。
何かお笑い芸人のネタみたい。

136 :デフォルトの名無しさん:2006/11/29(水) 05:31:54
ギター侍を知っていることが前提のネタだから仕方がない

137 :デフォルトの名無しさん:2006/11/29(水) 23:10:29
>3. 型推論も遅延評価も飛躍的な進歩というわけじゃない。

遅延評価はパラダイム的にはものすごい進歩だとおもうけど。プログラム言語内に無限概念を取り込むことに成功している。

数学チックにいうと
遅延評価のない言語=代数的
遅延評価のある言語=超越的
とでもいうか・・・。
遅延評価は何気にHaskellの一番の利点だと思う。(パラダイム的に)
型推論なんて比べ物にならね。(比べるものではないが、ていうか比べられないけど)

138 :デフォルトの名無しさん:2006/11/29(水) 23:16:31
あんまりよく読んでなかったorz

139 :デフォルトの名無しさん:2006/11/29(水) 23:25:33
遅延評価はHaskellの一番の欠点だと思う。
言語に組込みで持つには(計算機アーキテクチャから見て)複雑過ぎるし、
オーバーヘッドが大きすぎるし、空間効率の予測が難しすぎる。

たしかに遅延リストや遅延木は便利だけど、
それは言語に遅延評価を組み込む理由にはならない。
例えば遅延リストはOCamlやSchemeでも扱えるはず(違ってたらごめん)。

型推論とどっちを取るかといわれたら、俺なら間違いなく型推論をとる。

140 :デフォルトの名無しさん:2006/11/29(水) 23:29:05
おめーら
専門用語きんし

↓以後ひらがな+説明文添付必須

141 :デフォルトの名無しさん:2006/11/29(水) 23:29:54
結局は好みだよな。
だけど、言語機能として一貫して遅延させるのと単に遅延評価を扱えるってのとでは話が違ってくる事柄なので、
そういった形での比較はナンセンスだと思う。
遅延評価は遅延評価なりのメリットがあるので別に要らない場面ではOCamlでもSchemeでも使ってりゃいいんでね?

142 :デフォルトの名無しさん:2006/11/29(水) 23:31:39
常に!つかえば

143 :デフォルトの名無しさん:2006/11/29(水) 23:37:50
>そういった形での比較はナンセンスだと思う。
あー確かに議論が混乱してたかも。すまん。

>別に要らない場面ではOCamlでもSchemeでも使ってりゃいいんでね?
**が欲しいなら**言語を使え、というのは余計なお世話だ。
Haskellにあってその二言語にない特徴なんて遅延評価以外にもいくらでもあるわけで。

144 :デフォルトの名無しさん:2006/11/29(水) 23:46:41
遅延評価=>ε-δ論法
すなわちHaskellは無限概念を内包しているのだ!


といってみる。

145 :デフォルトの名無しさん:2006/11/29(水) 23:48:43
てめー記号まで使うな
よめないぞ

146 :デフォルトの名無しさん:2006/11/29(水) 23:50:16
つーかIOモナドも遅延評価なかったら使えないだろ。

147 :デフォルトの名無しさん:2006/11/29(水) 23:53:40
>>146
なんで?

確かに
main = putStrLn "foo" >> main
みたいなのは書けなくなるけど、
main = putStrLn "foo" >>= (\_ -> main)
と書けばいいので問題ないと思うんだが。

148 :デフォルトの名無しさん:2006/11/29(水) 23:54:42
C++で書いてると、たまにHaskellが恋しくなります。
Haskellで書いてると、たまにC++を頼もしく感じます。
修行が足りない?

149 :デフォルトの名無しさん:2006/11/29(水) 23:55:24
遅延評価無いとモナド使うのマンドクサ。

例外モナドがMaybe aではなく() -> Maybe aだったとすると

do
foo
bar



do
(\_ -> foo)
(\_ -> bar)

って書かないといけなくなる。


150 :デフォルトの名無しさん:2006/11/29(水) 23:56:06
>>147
実装上の問題。正格では実装できない。おそらくね。
全然違うかもしれんが。

151 :デフォルトの名無しさん:2006/11/30(木) 00:02:22
>>149
それは気づかなかった。
その例だとdoを展開するときに>>でなく>>=を使うようにするだけで十分だけど、
類似の例がもっとあるといやだな。

>>150
newtype IO a = IO (() -> a)
で十分なはず。
C++でIOモナドを書いてみたら一応動いたのでたぶん問題ない。

152 :デフォルトの名無しさん:2006/11/30(木) 00:03:44
>>151
なぬ。馬鹿な。

153 :デフォルトの名無しさん:2006/11/30(木) 00:04:05
>>143
Haskellにとって遅延評価は基盤であり、その他の便利な特徴もそれを前提としているものが少なくない。

>>139の「それは言語に遅延評価を組み込む理由にはならない。」
というのがあるから嫌なら特に必要ない限り他の選択肢を選べばいいんでね?
という程度の考えだった。

逆に言えばHaskellの特徴の便利な部分をOCamlやSchemeでは実現しえないものか?
できないならやっぱHaskellの遅延評価とそのほかの特徴は切り離せないものと割り切るしかなかろう。

154 :デフォルトの名無しさん:2006/11/30(木) 00:13:39
>>153
遅延評価がないと難しそうなもの(where節とか)もあるけど
そうでもなさそうなもの(型クラスとか純粋さとかインデントによる構文とか)も結構あると思う。

155 :デフォルトの名無しさん:2006/11/30(木) 00:33:51

    スーパーモ゛ナ゛ードッ!!

      ヽ/\ , ,
    | \ヾ   // |, ,
   ヾ         //,,
  \    ∧/|,//_  /"
  ヾ   ヾ,ヘヘ / ,/ /,
 \   ヾ|/|/ヽノ/,/  /"
  丶   (`∀´ ∨   /,
  \  d    つ   /"
  ヽ   |  |  |   /,,
  \__,,,(_(__),,,_/"


156 :デフォルトの名無しさん:2006/11/30(木) 00:53:46
遅延リストってジェネレータで代替えできるしなぁ

157 :デフォルトの名無しさん:2006/11/30(木) 01:17:54
haskellのソースって結局Monad使って手続き的に書いている場合が多い希ガス

ttp://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Scheme%3aLazyEvaluation
ここでnobson氏とShiro氏がSchemeで遅延評価にいろいろ挑戦しているみたいだけど
やっぱり完ぺきに実現するのは無理っぽいね

158 :デフォルトの名無しさん:2006/11/30(木) 12:17:46
無限概念の話、無視しないで・・・。

159 :デフォルトの名無しさん:2006/11/30(木) 12:44:01
>>158
BASIC でも無限ループが書ける。

160 :デフォルトの名無しさん:2006/11/30(木) 16:54:46
>>156
遅延リスト(無限リスト)とジェネレータ(ストリーム)は
本質的に異なる構造を持っているので、理論上代替は不可能。

実用上はだいたい代替できるんだけどね。
理論屋としては別物として考えておきたい。

161 :デフォルトの名無しさん:2006/11/30(木) 19:02:29
同じ終代数を持ちそうだがな

162 :デフォルトの名無しさん:2006/11/30(木) 21:41:56
>>148
俺もだ。
だれかHaskellとC++とDとMerdとRubyとNemerleの良いとこ取りした言語
作ってくれないかな。

163 :デフォルトの名無しさん:2006/11/30(木) 21:49:01
アセンブリを関数型で書いたりできないの?

164 :デフォルトの名無しさん:2006/11/30(木) 21:56:20
Lambda, the Ultimate Label?

165 :デフォルトの名無しさん:2006/11/30(木) 21:58:39
>>162
C++3xはそれらを全て取り込んだ究極言語になるらしいよ。

166 :デフォルトの名無しさん:2006/11/30(木) 22:08:55
3xワラタ
言語仕様が10巻本で出そうだな。

167 :デフォルトの名無しさん:2006/12/01(金) 00:31:39
>>139
>遅延評価はHaskellの一番の欠点だと思う。

遅延評価を実装することが、Haskellおよびその祖先のそもそもの目的だったのよ
遅延評価がHaskellの存在意義なの


168 :デフォルトの名無しさん:2006/12/01(金) 01:31:50
最近Haskellの勉強始めたんだけど全然わかんね。
ラムダ計算や圏論とかモナドって考え方がさっぱりだ。
これって計算機科学や数学を勉強しなきゃならんね。
情報系の学部ってこんなんやってんの?

169 :デフォルトの名無しさん:2006/12/01(金) 01:39:42
>>168
プログラミングは計算機科学じゃないから。

170 :デフォルトの名無しさん:2006/12/01(金) 01:40:53
「情報工学」とかになるとプログラミングに関する事もやってたりするけど。

171 :デフォルトの名無しさん:2006/12/01(金) 11:05:07
>>168
>ラムダ計算や圏論とか

haskell使うだけなら必要ない。
もしhaskellの入門本にラムダ計算や圏論が説明されていてもそこはすっとばしていい。


172 :デフォルトの名無しさん:2006/12/01(金) 14:37:21
現時点で最強の関数型言語はエクセルです。
すべてにおいて
エクセル>>>>>ハスケル

ハスケル厨は勘違いしないように。

名前自体パクりっぽいよな。

173 :デフォルトの名無しさん:2006/12/01(金) 14:38:09
だれか.NETに乗っけてくれ。
そうすれば必要なところではHaskell、あとはC#ですむ。

174 :デフォルトの名無しさん:2006/12/01(金) 19:38:41
Haskell.netはあったはずだが…

175 :デフォルトの名無しさん:2006/12/01(金) 22:55:47
>>171
そうなのか?俺も初心者だけど
そこを理解してこそ、Haskellを勉強する価値があるんじゃないのか?

176 :デフォルトの名無しさん:2006/12/01(金) 22:59:42
http://en.wikipedia.org/wiki/Levenshtein_distance#Haskell

やっぱり Haskell だよね。

177 :デフォルトの名無しさん:2006/12/01(金) 23:20:53
>>175
それは何のためにHaskellを勉強しているかに依るだろ。
俺は数学的背景をほとんど知らないけど、Haskellで
快適にコーディングができる程度には「使え」るし、
Haskellを勉強して得たものは非常に大きいと思う。

もちろん、背景を理解すると見えるものが一変する、という可能性は
否定できないけど。

178 :デフォルトの名無しさん:2006/12/01(金) 23:23:52
>>176
そのコードを自動でメモ化する処理系なんてあるのか?
さすがにそれを効率的だと言うのは誇張かと。

179 :デフォルトの名無しさん:2006/12/02(土) 00:44:09
>>173

なぜか3つもあるHaskell.NET
http://www.dotnetpowered.com/languages.aspx

180 :デフォルトの名無しさん:2006/12/02(土) 13:56:21
WinHugsどうやって削除すればいいですか?
直接レジストリ消そうと思うんだけど、どれ消せばいいのかわからない
Software以外に関係してるとこあるのかな

181 :デフォルトの名無しさん:2006/12/02(土) 14:32:53
>>180
インストール時の選択によって違う。
詳しくは>>70のgetRegsを読んでくれ。

182 :デフォルトの名無しさん:2006/12/02(土) 16:46:14
HKEY_LOCAL_MACHINE hKEY_LOCAL_MACHINE SOFTWARE\\Haskell
HKEY_CURRENT_USER  hKEY_CURRENT_USER  Software\\Haskell
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\WinHugs
hKEY_CLASSES_ROOT hugs_haskell
hKEY_CLASSES_ROOT hugs_haskell

この4つ消してあとはフォルダごとゴミ箱つっこめばOKかな?

183 :デフォルトの名無しさん:2006/12/02(土) 18:18:11
>>182
>HKEY_LOCAL_MACHINE hKEY_LOCAL_MACHINE SOFTWARE\\Haskell
>HKEY_CURRENT_USER  hKEY_CURRENT_USER  Software\\Haskell
中身がhugsだけでないなら消すとまずい。

184 :デフォルトの名無しさん:2006/12/02(土) 18:28:39
あ、そっか
GHCとかもその下に含まれてるね

その下のHugsってのだけ削除すればいいか

185 :デフォルトの名無しさん:2006/12/02(土) 22:13:19
>>171
逆にその辺の知識を勉強したいと思った場合どこから手を付ければいいんだろう?
高校レベルまでしか数学知識ない状態で。

186 :デフォルトの名無しさん:2006/12/03(日) 08:22:32
Jacobの黄色い本なんかがいいんじゃないか

187 :デフォルトの名無しさん:2006/12/03(日) 21:24:57
>>185
現実的に言って働いている社会人だとほとんど不可能だと思う。
理由としては。
1.時間が馬鹿みたいに必要。(日常生活に確実に侵食してくる)
2.難しいのでモチベーションが続かない。(理系は視野が狭いというが狭い視野じゃなきゃやってられねぇ。)
3.自己流だと確実に変な方向に行ってしまう(数学基礎論にはまってしまってその考えから抜け出せなくなってしまうのがよくあるオチ。数学は記号論理学じゃない。)

188 :デフォルトの名無しさん:2006/12/03(日) 21:26:04
まともにやろうと思えばだけれど。

189 :デフォルトの名無しさん:2006/12/03(日) 21:32:09
>1.時間が馬鹿みたいに必要。(日常生活に確実に侵食してくる)
貯金が溜まりますねー

190 :171:2006/12/03(日) 23:13:30
>>175

>>171

>haskell使うだけなら

という限定つき。
たとえば、チューリングマシン知らなくてもC言語は使えるようになるし。
むしろ、基礎理論をうまく隠蔽できないなら、プログラミング言語の設計としては失敗といえるかも。


191 :デフォルトの名無しさん:2006/12/03(日) 23:32:41
>>187
> 3.自己流だと確実に変な方向に行ってしまう(数学基礎論にはまってしまってその考えから抜け出せなくなってしまうのがよくあるオチ。数学は記号論理学じゃない。)

そんな奴みたことない。
それに、この分野、まだまだみんな自己流じゃないの。
数学や物理のように確立されたカリキュラムもないし。

192 :デフォルトの名無しさん:2006/12/04(月) 09:53:06
>>191
そこからは自己流だがそこまで行くための基礎的な部分までの話。
基礎ができないと応用はできない。

193 :デフォルトの名無しさん:2006/12/04(月) 15:20:35
GHCってhaskellで書いたソースをCに変換させてコンパイルさせているのでしょうか?
haskellソース→Cソース→アセンブラソース・・・
それとも直接アセンブラのソースに行くのでしょうか?
haskellソース→アセンブラソース・・・

194 :デフォルトの名無しさん:2006/12/04(月) 16:12:18
上のほう
でも当然読めるようなCじゃない

195 :デフォルトの名無しさん:2006/12/04(月) 16:15:20
場合によっては直接アセンブリを生成する。これは-fvia-Cと-fasmで制御できる。

196 :デフォルトの名無しさん:2006/12/04(月) 16:32:04
>>191
1ヶ月でできるお勧めカリキュラム

1週目 λ計算。とりあえずD∞ modelあたりまでやる
2週目 型理論。ざざっとSystem Fまでやる
3週目 圏論。1,2週目の理解をもとにCCC modelまで。
4週目 記号論理学。LKLJNKNJの規則をながめる。

この後は興味に応じて論文を読み漁ればok


197 :デフォルトの名無しさん:2006/12/04(月) 17:42:23
そのカリキュラム、相当ヒマで相当モチベーションの高い人間でも
こなすのが辛いような気がするんだが。

198 :デフォルトの名無しさん:2006/12/04(月) 18:10:44
まあ進度は時間と能力に応じて変わるかも。
でも、この辺の分野は親切な入門書もたくさんあるし、自己流の罠? にはまることもないと思う。

199 :デフォルトの名無しさん:2006/12/04(月) 20:24:18
社会人で独学で勉強していておかしな方向に行っている俺様が来ましたよ。

つーか。196は社会人なめとんのかい。
社会人の場合、一日にかけられる勉強時間でせいぜい30分とか
1時間だぞ。その時間をとれないことも多い。

しかも環境も劣悪で電車の中とか、仕事で疲れた状態だとか、あんまり
頭に入るような状況ではない。

こういう話を聞くとまた、過酷な勤務の底辺DQNプログラマか、と思う奴も
いるだろうけど(DQNなのはあっているが)、社会人で9時6時で帰れるような
職場はありません。9時ぐらいまでで帰れる職場でも同じで、それは一般的
には楽な職場と言われている。

しかもカリキュラムがいきなりλ計算。
高校卒業程度の数学力と言っているのにλ計算以前に勉強することが
あるだろうと小一時間...。つーか、記号論理学とかはλ計算以前に
やるべきだと思うがどうか。

むしろ独習の場合、自分のペースで学習が進んでかつ理解度を試される
ことがないので、解った気になって先に行ってしまうのがあらぬ
方向に進んでしまう気がするがどうか。早くカリキュラムを進める
理解力より、ゆっくり物になるまで粘る忍耐力の方が重要な気がするけど、どう。




200 :デフォルトの名無しさん:2006/12/04(月) 20:47:03
>>196
やってみます。お薦めの本を教えてください。洋書でもいいです。

201 :デフォルトの名無しさん:2006/12/04(月) 21:14:18
来週からλ計算開講だお

202 :デフォルトの名無しさん:2006/12/05(火) 01:18:01
>>201
頼むぞホント
高卒でもわかるように説明できないようじゃ価値ねーからな

203 :デフォルトの名無しさん:2006/12/05(火) 01:31:58
>>201
おい、何レス使うつもりだ

204 :デフォルトの名無しさん:2006/12/05(火) 02:50:07
>>194,195
有り難う。
んじゃ、Cで関数書いて呼び出したり
アセンブラで書いた関数をCで呼び出して
その関数をさらにhaskellで呼び出すことも可能なのでしょうか?

205 :デフォルトの名無しさん:2006/12/05(火) 04:12:04
>>204
もちろんできる。
そもそもForeign Function InterfaceというのがHaskell98の追補にあって、
たぶん全ての実装で利用できる。
http://www.cse.unsw.edu.au/~chak/haskell/ffi/

206 :デフォルトの名無しさん:2006/12/05(火) 04:35:51
ふーん、そこまで機能がそろっているのに
なぜ誰もOSを書こうとしないの?
アセンブラとCが使えるならOS作れそうな気が
するのだけれど。


207 :デフォルトの名無しさん:2006/12/05(火) 04:52:36
検索したら見付かったが。

http://programatica.cs.pdx.edu/House/
>House is a demo of software written in Haskell, running in a standalone environment.

208 :デフォルトの名無しさん:2006/12/05(火) 14:54:22
そういう車輪の再発明っていうか、単に言語間の移植は、作ってるうちに空しくなるんだよ


209 :デフォルトの名無しさん:2006/12/05(火) 21:13:27
ghcでアセンブラの勉強できないの?

210 :187:2006/12/06(水) 11:24:57
>>199
>つーか、記号論理学とかはλ計算以前に
>やるべきだと思うがどうか。
やるとしてもかなり初歩の部分だけでいいと思う∀、∃、とかの意味をちゃんと「理解して使える」ようになればいいと思う。
あんまり込み入ったところは使わないしおそらく必要性もないと思う。
というかかなりごちゃごちゃしていてやる気がしないはず。(俺はしなかった)

>むしろ独習の場合、自分のペースで学習が進んでかつ理解度を試される
>ことがないので、解った気になって先に行ってしまうのがあらぬ
>方向に進んでしまう気がするがどうか。早くカリキュラムを進める
>理解力より、ゆっくり物になるまで粘る忍耐力の方が重要な気がするけど、どう。
理解度を試されるというところもそうなのだけれど、根本的に数学を理解するということを勘違いしていることが多い(勘違いしていました。)
数学は語学です。

おそらくもっともいい方法は圏論勉強会に一回だけでも出てしまうのがいいと思う。(ちなみに俺は行った事ない)
なんとなく方向性はつかめるんじゃないかと勝手に思う。

211 :デフォルトの名無しさん:2006/12/06(水) 18:31:09
>>210
察するに、あなたは「自己流」でなんとかなったんじゃないの?

212 :199:2006/12/06(水) 20:00:59
> あんまり込み入ったところは使わないしおそらく必要性もないと思う。
> というかかなりごちゃごちゃしていてやる気がしないはず。(俺はしなかった)
こういうところで手を抜くと、後々しょうもないところで限界がくる
というか、学習に広がりがなくなると思うのでやった方がいいと思うけど
どうなんでしょう。それこそ独学の罠なんじゃないんでしょうか。

計算機科学の勉強は何も関数型言語だけじゃなく、論理学がつかわれている
データベース、公理的意味論、モデル検査などなど色々面白そうな
トピックスがあるのでこれらを楽しめないのは損...だと思うんだけど。
当然、関数型言語の勉強をするにも論理学はあった方がいいと思うんだけど。


213 :デフォルトの名無しさん:2006/12/06(水) 20:07:34
そういう意味では、記号論理学は語学、だな

214 :デフォルトの名無しさん:2006/12/06(水) 20:27:50
もうちょっとわかりやすくて楽しそうなスレになりませんか?

215 :デフォルトの名無しさん:2006/12/06(水) 20:33:56
論理学だの計算機科学だのそんなことはどうでもいい
ここはム板で、Haskellでプログラミングすることに関するスレだ。
関係ない話は情報学板・数学板でやれ

216 :デフォルトの名無しさん:2006/12/06(水) 20:46:31
以後、ラムダ計算とか圏論とかの話題は禁止な

217 :デフォルトの名無しさん:2006/12/06(水) 21:41:41
そんなことよりラムダ計算とか圏論とかの話しようぜ

218 :デフォルトの名無しさん:2006/12/06(水) 21:45:30
そんなことより鮫の話しよーぜ

219 :デフォルトの名無しさん:2006/12/06(水) 21:46:14
そんなことよりオセロやろーぜ
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│○│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛


220 :デフォルトの名無しさん:2006/12/06(水) 22:03:09
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│○│ λ│  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛

221 :デフォルトの名無しさん:2006/12/06(水) 22:04:34
>>215
そんなに固いこといわなくても。
理論よりの話題が多いのは、そっちに興味のある住人が多いからだろう。
そもそも過疎スレで、Haskellでのプログラミングについてだって
盛り上がっているとはいえない(いったいHaskellでコード書いてる奴が
どれくらいいるのか)んだから、無理に話題をしぼってもいいことはないと思う。

もちろん、興味のない議論が長々と続くのは不愉快だと思うが、
その時は自分でネタを出すくらいの勢いで。

222 :デフォルトの名無しさん:2006/12/06(水) 22:05:34
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │λ│λ│λ│λ│  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛

223 :デフォルトの名無しさん:2006/12/06(水) 22:06:36
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │ &│  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │λ│λ│λ│λ│  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛

224 :デフォルトの名無しさん:2006/12/06(水) 22:07:36
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │λ│&│λ│λ│  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛


225 :デフォルトの名無しさん:2006/12/06(水) 22:11:40
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │λ│●│λ│λ│  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │●│&│  │  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛

226 :デフォルトの名無しさん:2006/12/06(水) 22:14:48
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│  │  │  │  │┃ λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │&│&│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │λ│●│λ│&│  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │●│&│  │  │&│  │λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛

227 :デフォルトの名無しさん:2006/12/06(水) 22:19:46
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃ λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│  │  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│  │  │  │  │λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│&│  │  │  │┃  λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃    λ...
┃│  │  │λ│●│λ│&│  │  λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ λ...
┃│  │  │●│&│  │  │&│λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃   λ...
┃│  │  │  │  │  │  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ λ...
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃    λ...
┗━━━━━━━━━━━━━━━━━┛

228 :デフォルトの名無しさん:2006/12/06(水) 22:24:15
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │ λ...  λ...         λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  λ...  λ...          λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  λ...  λ...        λ...      λ...  λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │ λ...     λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃  λ...
┃│ λ...    λ  λ   λ...
┃├─┼─┼─┼─┼─┼─┼─┼─λ...
λ...     λ...λ... λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃  λ...
┃│  │  │ λ...    λ...    λ...
┃├─┼─┼─┼─┼─┼─┼─┼λ... λ...
┃│  λ...     λ...    λ...
┃└─┴─┴─┴─┴─┴─┴─λ...   λ...
┗━━━━━━━━━━━━━━━━━┛

229 :デフォルトの名無しさん:2006/12/06(水) 22:25:07

鮫って魚が交尾するから鮫って書くんだぜ


230 :デフォルトの名無しさん:2006/12/06(水) 22:25:11
>>222-228
結局はλってこったな

231 :デフォルトの名無しさん:2006/12/06(水) 22:27:48
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │∃│∃│  │  │  │  │┃ λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│∃│  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│∀│  │  │●│  │∀│  │  │λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │∀│  │●│&│  │  │  │┃  λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃    λ...
┃│  │∀│λ│●│λ│&│  │  λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ λ...
┃│  │  │●│&│  │  │&│λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ ∀ λ...
┃│∃│  │  │  │∀│  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ λ...
┃│  │  │∃│  │∃│  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃    λ...
┗━━━━━━━━━━━━━━━━━┛


232 :デフォルトの名無しさん:2006/12/06(水) 22:30:32
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │∃│∃│  │  │  │  │┃ λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │∨│∃│  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│∀│  │  │⇒│  │∀│  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │∀│  │∨│&│  │  │  │┃  λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃    λ...
┃│  │∀│∧│∀│∧│&│  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ λ...
┃│  │  │⇒│&│  │  │&│  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃  λ...
┃│∃│  │  │  │∀│  │  │  │┃λ...
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃ λ...
┃│  │  │∃│  │∃│  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃    λ...
┗━━━━━━━━━━━━━━━━━┛

233 :デフォルトの名無しさん:2006/12/06(水) 22:40:21
λがいなくなってすっきりしたな

234 :デフォルトの名無しさん:2006/12/06(水) 22:56:57
ParserCombinator とかだと簡単過ぎて、
文章書いてる、または、データ入力の仕事している気分で全く面白くない。


235 :デフォルトの名無しさん:2006/12/06(水) 23:20:40
parsecに浮気したこともあったが、結局左再帰の処理が
鬱陶しくなってhappyに戻った。

236 :デフォルトの名無しさん:2006/12/08(金) 00:37:39
>>211
ならなかった。それ気づいたときなんか毎日泣いた。
だからなんか粘着気味にレスしてる。

>>212
記号論理学は(偏見かもしれないが)直感が効かない。
数学でも直感てすごく大事。
あれはほぼ超絶テクニックのアルゴリズムの塊だから
やっても面白くないと思う。
最初から直感の聞かない数学の分野やっちゃうと
それが数学だと思っちゃう。まぁそれも確かに数学
なんだがあれは自分の人生をそれにすべて費や
しているような人がやるもんだ。
たとえば、基礎論とかゼータ関連ね。

煽りとかじゃなく>>212はブルバキって知ってるか?

237 :デフォルトの名無しさん:2006/12/08(金) 00:57:14
ん。なんかよく読むと趣旨がわからなくなっているな。

まぁ要するに>>212が必要としている論理学のレベルは
ほかの分野の数学やっていれば自然に身につく。多分。
だったらほかの直感の効くわかりやすい分野から始めた
方がいいんじゃないかと。
あえて記号論理学みたいな諦める可能性90%なやつから
始める必要なんてなかろう。必要性が出てきたときに勉強
すればいいんじゃないかと。

238 :デフォルトの名無しさん:2006/12/08(金) 01:11:18
すれ違い
いい加減ウザい

239 :デフォルトの名無しさん:2006/12/08(金) 01:16:56

圏論理解するのにどんくらいかかる?
高卒で数IIもわからんし、基本情報処理もさっぱり


240 :デフォルトの名無しさん:2006/12/08(金) 01:22:19
基礎も何も無いのに、かっこよさそうだからと飛びつくような人間は、
どんな分野も一生理解出来るようにはならんよ。

241 :デフォルトの名無しさん:2006/12/08(金) 01:25:49

くっだらねーレスしてる暇あったら馬鹿にでもわかるような説明考えろよ


242 :デフォルトの名無しさん:2006/12/08(金) 02:02:34
>>239
日本に圏論を理解してると自覚している人が誰もいないのに?

243 :デフォルトの名無しさん:2006/12/08(金) 02:03:19
>>239
人に依るとしか言えない。取りあえず入門の第一歩
http://d.hatena.ne.jp/m-hiyama/20060821/1156120185
を読んでどう思ったか教えてくれ。

244 :199:2006/12/08(金) 04:14:43
ブルバキの名前も知らないと思われているところをみると、
本当に何も知らない人なんじゃないかと思われているような。

たぶん、想像しているレベルの論理学のイメージはそんなに
変わらないはずだよ。

自分もそんなにディープな論理学の知識はいらんと思うが
(それはやぶ蛇)、自然に覚えるのでなく、それ用の入門書
ぐらい嫁というスタンスなんだが。俺もそれ以上はやってない。

> あえて記号論理学みたいな諦める可能性90%なやつから
どこまでやって諦める可能性90%というのか知らないけど。
言われてみればそんなに簡単ではないのは確かにそうだな。


245 :デフォルトの名無しさん:2006/12/08(金) 04:41:44
まあHaskellスレに来るような人にとってはλ計算の方が
記号論理学より入りやすいんじゃないかな。
プログラム言語だし。

わかってみれば浅い話でも、
いきなりシーケント計算とかみると投げ出すでしょフツー

246 :デフォルトの名無しさん:2006/12/08(金) 11:29:00
>ブルバキの名前も知らないと思われているところをみると、
>本当に何も知らない人なんじゃないかと思われているような。

名前だけじゃなくてその集団の目指したこととその失敗のことを
言っているんじゃないか。

247 :デフォルトの名無しさん:2006/12/08(金) 18:32:55
ブルバキについて言及する奴の99%は、その著書を1ページも読んでない。

248 :デフォルトの名無しさん:2006/12/08(金) 20:30:21
数学原論をまともに読む気するか?

249 :デフォルトの名無しさん:2006/12/08(金) 21:02:59
>>242
そうなの?
圏論勉強会は?

250 :デフォルトの名無しさん:2006/12/09(土) 00:12:51
conceptual mathematicsにはファンクタも出てこないじゃないですか。
ってamazon(us)で批評されてたけど、
実際、Haskellプログラミングや関連論文読む力付ける目的に合ってるの?
結構長いし、ちょっと不安す

251 :デフォルトの名無しさん:2006/12/09(土) 00:52:06
!!ファンクタ出てこないの?
でも、いまつづいてる連載ってfmapを結構頻繁に使ってない?

252 :デフォルトの名無しさん:2006/12/09(土) 01:30:37
>>250
俺も conceptual mathematics をざっと読んだけど出てくるのは product, sum, exponetial まで。
でも具体例でじっくり書いてあるので足元を固めて自力をつけるのにはよいかもしれない。
理解してたつもりでも実際練習問題解くとむずかしいものも多い。
取りあえず浅く知って(真に理解したという意味ではないよ)早く先に進みたいという人には向かない。

253 :252:2006/12/09(土) 01:50:51
補足
equalizer も確かでてきてた。
「自力をつける」は「地力をつける」だった。

254 :デフォルトの名無しさん:2006/12/09(土) 03:02:44
そういえば圏論勉強会の結果みたいなホワイトボードの写真あるけど
ほとんど説明無い。ほとんど有向グラフの図ばっかり。
あの図だけ見て何が何をやっているのか理解している人いるの?

255 :252:2006/12/09(土) 03:37:30
>>254
同じテキスト読んでればボートの図だけで大筋何を言わんとしているかは想像できる。


256 :デフォルトの名無しさん:2006/12/09(土) 12:29:51
素直に圏論の基礎読めば良いんじゃね。
なんでわざわざ洋書にこだわるんだ。

257 :デフォルトの名無しさん:2006/12/09(土) 12:32:39
そんなもんオマエ…マクレーンが読めるようならこんなとこにおらんやろ

258 :デフォルトの名無しさん:2006/12/09(土) 13:36:44
なんだか不穏な空気が流れてきたな・・・。
もうこの話し止めほうがいい気がしてきた。

259 :デフォルトの名無しさん:2006/12/09(土) 13:37:35
さすがにもはや Haskell から遠ざかりすぎだしな

260 :デフォルトの名無しさん:2006/12/09(土) 13:45:07
Haskellプログラミングでは圏論をあまり意識しなくても良くなっている。
これ以降圏論の話は数学板か情報学板でするように。

261 :デフォルトの名無しさん:2006/12/09(土) 15:00:13
>>258
けんのん?

262 :デフォルトの名無しさん:2006/12/09(土) 19:57:47
>>260
いや。ファンクタだけは理解しておいたほうが良いんだよ。
fmapがちゃんとつかえるのと使えないのとでは結構違いがある。
liftMも同じく。

263 :デフォルトの名無しさん:2006/12/09(土) 20:03:31
>>262
圏論を理解していなくても使える。

264 :デフォルトの名無しさん:2006/12/09(土) 20:12:14
使い方を間違える。

265 :デフォルトの名無しさん:2006/12/09(土) 20:20:00
圏論を理解していないとfmapがちゃんと使えないって例えばどんな場合?

266 :デフォルトの名無しさん:2006/12/09(土) 20:41:36
>>261
ふおん

267 :デフォルトの名無しさん:2006/12/09(土) 20:53:03
なんていうか読みづらくなる。

使い方を間違えるって言うのはおかしかったな、すまん。

268 :デフォルトの名無しさん:2006/12/09(土) 21:06:54
ふと思ったんだが、fmapとliftMをHaskellで日常的に
使ってますって人ってどれくらいいるもんなんかな?

連載では多用しているけど。

269 :デフォルトの名無しさん:2006/12/09(土) 21:09:28
つまり、理想的な書き方と比べて意味的には同等だけど
読みづらい書き方になる、ってことか。

どっちにしても例が欲しい。

>>268
fmapは使わないけどliftMは日常的に使う。

270 :デフォルトの名無しさん:2006/12/09(土) 21:20:16
例・・・。そうだな。極端な例だと
`fmap`,`liftM`みたいに中間演算子的に使われると
どういう意図でそれをつかっているのか意味がとれない。

あとは、できるだけ
たとえば
calc :: a -> a
という関数があったらIOモナド用に
calcIO :: IO a -> IO a
calcIO = fmap calc
みたいに使ってもらったほうが構造だけは同一で元となっている
カテゴリーだけが違うということが明確になっていいんじゃないかと
思っている。

うーん。うまく伝わっただろうか・・・。
というかあまりいい方法じゃないのかなとか思ってきた・・・。

271 :デフォルトの名無しさん:2006/12/09(土) 21:29:28
なるべく根本的な関数定義はラムダ計算のカテゴリー内で
やってしまって後はカテゴリーごとにfmapするなりliftさせるなり
したほうが再利用できるようになるし。

sample :: a -> IO a
なKleisli射はなるべく作らない方向性でいくべきなんじゃないかって。

モジュール化も損なわれるんじゃないかと。
でもそこまでいってしまうと作れなくなってしまうというジレンマに陥って
しまうから・・・。どうなんだろうねぇ。。

272 :デフォルトの名無しさん:2006/12/09(土) 21:47:36
>>270
レスありがとう。

>`fmap`,`liftM`みたいに中間演算子的に使われると
>どういう意図でそれをつかっているのか意味がとれない。
これは俺も時々やるんだが、気持ち悪いと感じるのはたぶん分かった。
圏論の観点からはfmapは(射に作用する)単項演算であって
二引数関数のように使うのは不自然だ、ということか。(素人なので間違ってたら教えてくれ)

このスタイルを弁護しておくと、Haskellではあらゆる場合について
(g f) x

f `g` x
が等しいので、後者を見た読者は前者を見たのと同じように理解することが期待されている。
だから、両者を単純に字面上のおさまりに基づいて使い分けることができる、という考え方が
あり得ると思う。例えば f x の代わりに f `id` xと書くのがそんなに変だろうか。
加えて、それを言い出すと(>>=)だって圏論的には一引数の演算なんじゃないか、とか。

calcの例は理解できなかった。せっかく説明してもらったのにすまん。

273 :デフォルトの名無しさん:2006/12/09(土) 22:01:34
>>271
それは例えば標準入力からCSV形式のデータを読みたいときに、
getCSV :: IO [String]
のようなものをgetChar/getLine/getContentsを使って書くよりも、
parseCSV :: String -> [String]
を用意してユーザ側でfmap parseCSV getContentsとさせた方が良い、
という理解でおk?
それなら多くのHaskellユーザが経験的にやってることだと思うんだが。

274 :デフォルトの名無しさん:2006/12/09(土) 22:19:06
>272

>圏論の観点からはfmapは(射に作用する)単項演算であって
>二引数関数のように使うのは不自然だ、ということか。(素人なので間違ってたら教えてくれ)

その通り。というかそう自分としては解釈している、というほうが適切かな。
人によっては他の翻訳もありうると思う。

>このスタイルを弁護しておくと...

そういうスタイルがあることは最近知った。
前スレで出てきたLaw and Order in Algorithmicsってpdf内が
そういう流儀だったしおかしくはない。
でも、個人的に同一カテゴリー内の射(a -> a, IO a -> IO a)
なら「有り」だとは思うけど、fmapとliftMの場合そうやっちゃうと
ファンクタとかリフトって概念を持ち出す意味がなくなる。

>加えて、それを言い出すと(>>=)だって圏論的には一引数の演算なんじゃないか、とか。

圏論的には(>>=)は概念的にfmap,liftMの持つ概念と別種。
(といいつつそこらへんはよくわかっていないからどうともいえない
というのが本音。別種であるのは確か)


275 :デフォルトの名無しさん:2006/12/09(土) 22:23:20
>calcの例は理解できなかった。せっかく説明してもらったのにすまん。

>圏論の観点からはfmapは(射に作用する)単項演算であって

ということなんだけどちょっと例が少なかったか。
(というか勝手な見解だからあんまり惑わされないでくれ)

というわけでもっと例をあげると
calcMaybe :: Maybe a -> Maybe a
calcMaybe = fmap calc

calcList :: [a] -> [a]
calcList = fmap calc

calcF :: F a -> F a
calcF = fmap calc   Fは任意のFunctorクラス。

みたいなかんじに使えないかと。
・・・でも、やっぱり適用できる場面はそんなに無いか・・・な。

>>273
そういうこと。そしてそれがファンクタの概念。
経験的にわかっていることならこの際明確にしてしまおう。

276 :デフォルトの名無しさん:2006/12/09(土) 22:25:37
なんかえらそうに書いてしまったが
これはすべて個人的な勝手な解釈だ。

277 :デフォルトの名無しさん:2006/12/09(土) 22:41:30
なんかレスくれ。いろいろと穴はあると思うし。

278 :デフォルトの名無しさん:2006/12/09(土) 23:04:44
>>275
>みたいなかんじに使えないかと。
つまり、IOならIOについて(fmap calc)をひとかたまりとみなすべきであり、
そういうスタイルを奨励するためにcalcIOという名前を付ける、ということか。逆に
do x <- a; b (calc x)
のようにcalcの適用をdo式中に散逸させたりすると、
この構造がわかりにくくなるので良くない、と。
ただ、相変わらずこのように書くことの現実的利益がわからない。
>構造だけは同一で元となっている
>カテゴリーだけが違うということが明確になっていいんじゃないかと
>思っている。
の部分。

>経験的にわかっていることならこの際明確にしてしまおう。
もちろん明確にするのは価値があると思うし、そういうのは
個人的に好きな方向性だけど、もともとの議論に関して
「圏論を知らないとHaskellを使うのにどれくらい支障があるか」という点については、
はっきりさせておきたかった。俺としてはHaskelll(のような言語)が
真に一般に普及してほしいと思っているので、経験だけではカバーできない
重大な困難があるかどうかが気になった。

279 :デフォルトの名無しさん:2006/12/09(土) 23:52:51
>>278
>つまり、IOならIOについて(fmap calc)をひとかたまりとみなすべきであり、
>そういうスタイルを奨励するためにcalcIOという名前を付ける、ということか。

いや、そこまで強くは言っていない。名前付けたのはわかりやすくするためで
>>273みたいな名前付けない使い方が一般的だと思う。
というか経験的にすでにわかってることなんだと思う。

>ただ、相変わらずこのように書くことの現実的利益がわからない。

考えを整理できるとかそういう部類で現実的利益といわれると無いね・・・。

>「圏論を知らないとHaskellを使うのにどれくらい支障があるか」という点については、
>はっきりさせておきたかった。俺としてはHaskelll(のような言語)が
>真に一般に普及してほしいと思っているので、経験だけではカバーできない
>重大な困難があるかどうかが気になった。

Haskell使用するというレベルでは圏論の知識の有無による
困難は表面的には無い。が根源的には結構困難があると思う。
おそらく人のコードを読むという段階であらわに出てくるハズ。
fmapにしたってファンクタの概念をつかって圏論チックな考え方で
使おう思っている人と、そうじゃない人だと使い方が違う。
そういうのが積み重なって人によってはその書き方の意図が
読めないコードというのが出てくると思う。
そういう意味では結構困難がある。
まぁ要するにコーディングスタイルの問題。
圏論的なものを取り入れたHaskellコーディングスタイルを確立する
のかあくまで経験的なコーディングスタイルを確立するのか。

うーむ。なんだかグダグだになってしまった。
とりあえずfmap,liftMは便利じゃね?ということを
最初は説明したかったんだがものすごく言葉足らずでスマン。

280 :デフォルトの名無しさん:2006/12/10(日) 00:39:38
>>279
「現実的利益」なんて嫌らしい言い方をしたが、ようするに
「それで何がうれしいのか」を聞きたかっただけだった。
「考えを整理できる」というので十分。
>考えを整理できるとかそういう部類で現実的利益といわれると無いね・・・。
圏論的な考え方を身につけた人にとって考えを整理しやすい書き方、ということでいいだろうか。

>Haskell使用するというレベルでは圏論の知識の有無による
>困難は表面的には無い。が根源的には結構困難があると思う。
>おそらく人のコードを読むという段階であらわに出てくるハズ。
いいたいことはたぶん分かった。もちろん実感として分かるわけじゃないので
自信を持って理解したとはいえないが。
俺としては、「表面上」支障がなければそれで十分だと思う。
例えばライブラリを提供する/使うだけならスタイルの不一致は問題にならないし。

しかし冷静に考えると、表面上支障がないというのは誰に聞くまでもなく俺が
身を持って知っていることだった。これじゃ何が聞きたかったのか分からん。
結局聞きたかったのは「圏論ってそんなにすごいの?」だったような。
ぐだぐだ

>とりあえずfmap,liftMは便利じゃね?ということを
>最初は説明したかったんだがものすごく言葉足らずでスマン。
とんでもない。言葉の通じない相手に長々付き合ってくれたことに感謝。

281 :239:2006/12/10(日) 01:04:10
>>243
うん
それ読んでもつまらない
まだ早いようだ

282 :デフォルトの名無しさん:2006/12/10(日) 01:33:40
f `fmap` a
は後置演算子と考えればOK。
つまり
(f `fmap`) a


283 :デフォルトの名無しさん:2006/12/10(日) 11:18:22
>>280
>圏論的な考え方を身につけた人にとって考えを整理しやすい書き方、ということでいいだろうか。

まぁせっかく勉強したんだから使っていこうじゃんという気持ちも大きい。

>俺としては、「表面上」支障がなければそれで十分だと思う。
>例えばライブラリを提供する/使うだけならスタイルの不一致は問題にならないし。

その通りだと思う。ただ圏論の概念の名前を冠した射(ファンクタ、リフトetc..)は
(個人的に)理解して欲しい。
ちゃんとそういう名前がついているわけだし。

>結局聞きたかったのは「圏論ってそんなにすごいの?」だったような。

実際的な利益はほとんど無いんじゃないかと思う。
一般的抽象のナンセンスといわれるようにすごくないと感じる人も
いて全然おかしくない。個人的な価値観の問題なのかな。

ただ、モナドに関する情報の中でどれが有意義な議論なのか
見分けることができるようにはなった。
あと、うまくいえないがしっくりとする。
なんかしっくりとこないなぁというひとはちょっとやってみると
いいんじゃなかろうか。

284 :デフォルトの名無しさん:2006/12/10(日) 14:48:03
>>282
スマン寝ぼけて無視してた。
Functorクラスでfmapの定義
fmap id = id
fmap (f . g) = fmap f . fmap g

とあるけどこれはまんま圏A、B間のファンクタFの定義
F( id_A ) = id_B
F( f_A ・ g_A ) = f_B・g_B
と同じ。
ただ、厄介なことにfmapがファンクタというわけではない
(ファンクタを構成するarrow functionというものにあたる)
arrow functionこと射関数っていうのは関数を圏の異なる関数に
移す関数。(関数というと語弊があるから「作用」というべきか)

うむ。そうだfmapは関数ではない。「関数」に作用する「作用素」と
見るべきだから中間演算子として使うのはダメ。
というのではどうですか。

285 :デフォルトの名無しさん:2006/12/10(日) 14:59:31
なんか変なことかいてしまったかも。

まぁfunctionって意味が広いんだよ。
それを全部functionという単語の元
素朴な関数概念で置き換えちゃうから・・・。

うーん。自分でいっててよくわからん。
真偽は自分で考えてくれ。

286 :デフォルトの名無しさん:2006/12/10(日) 16:36:52
圏論を知っても頭は整理されない、ということだけはわかった

287 :デフォルトの名無しさん:2006/12/10(日) 17:02:27
確かにね、否定できんな。
まぁグダグダだしね

288 :デフォルトの名無しさん:2006/12/11(月) 13:01:48
関数型超初心者なんですが、圏論を使うとプログラムとかでこんなにエレガントになるという例とかってありますか?

289 :デフォルトの名無しさん:2006/12/11(月) 16:39:02
すみません、こちらはもっとベタな質問なのですが、
HaskellのFunctorと、C++のファンクタって、何か関係がありますか?
C++のファンクタは、単なる呼び出し可能のオブジェクトなのですが。


290 :デフォルトの名無しさん:2006/12/11(月) 16:44:04
あと、これも非常に低レベルな質問です。
http://itpro.nikkeibp.co.jp/article/COLUMN/20061005/249933/

この連載を少しずつ読んでいるのですが、
fmapがあればmapは要らないような気がします。なぜmapが残っているのでしょ
うか?


291 :デフォルトの名無しさん:2006/12/11(月) 18:13:45
>>289
どちらも語源がfunctionである、という以上の繋がりはないと思う。

292 :デフォルトの名無しさん:2006/12/11(月) 20:02:35
じゃあHaskellのファンクタとOCamlのファンクタは関係ある?
289じゃないけど便乗。

293 :デフォルトの名無しさん:2006/12/11(月) 20:27:22
C++のファンクター、カンケネー♪
OCamlのファンクター、カンケネー♪

294 :デフォルトの名無しさん:2006/12/11(月) 21:10:57
OCaml のファンクタも Haskell のファンクタも、圏論のファンクタ(関手)を
ベースにした概念という意味では関係がある。
C++のファンクタはまた違う語源のものなので関係ないという話をどこかで読んだことがある。


295 :289:2006/12/11(月) 21:16:52
皆さん、ありがとうございます。
C++とは関係ないのですね。しきりに首をひねっておりました。

296 :デフォルトの名無しさん:2006/12/11(月) 23:01:06
俺も質問させてください。
words関数やlines関数の実装で、リストのリストを返す方法がわかりません。
"hello world" を引数に取って["hello","world"]と返す関数はどのように実装したらいいでしょうか

297 :デフォルトの名無しさん:2006/12/11(月) 23:03:54
f "hello world" = ["hello","world"]
f _ = []

298 :デフォルトの名無しさん:2006/12/11(月) 23:13:34
>>289
ttp://www.jmuk.org/d/?path=2005/08/22#d22t03

299 :デフォルトの名無しさん:2006/12/12(火) 09:22:19
>>296
http://www.sampou.org/haskell/report-revised-j/standard-prelude.html#$vlines


300 :デフォルトの名無しさん:2006/12/12(火) 12:25:47
>>290あの記事を理解できる時点で低レベルじゃない

301 :デフォルトの名無しさん:2006/12/12(火) 17:03:37
>>290
互換性のために残ってるのだと思う。
単相性制限があるから、単純にmapをfmapに置き換えることは出来ない。

302 :289:2006/12/12(火) 17:25:36
>>298
おお!向井さんの所でまとまっていたとは!

>>300
いや、私には難しいので、読むのにすごく時間がかかります。
だけど、入門Haskellのモナドまでを読めば、何とか理解できる範囲だと思います。
圏論の全く分からない私にはありがたい連載です。
何より、とても面白いと思います。

>>301
やはり過去互換性ですか。単相性制限?が分かりませんが、だからfmapという
新しい名前を作る必要があったのですね。


303 :デフォルトの名無しさん:2006/12/14(木) 11:38:37
質問です
Visual Haskellをインストールしようとしたところ、
WindowsHostScriptで「Failed to setup vs_haskell.dll」というエラーが出たのですが、
これを解決する方法はありませんか?
よろしくお願いします。

304 :デフォルトの名無しさん:2006/12/15(金) 02:29:08
使うな。

305 :デフォルトの名無しさん:2006/12/15(金) 07:20:19
ありがとうございます。
解決しました。

306 :デフォルトの名無しさん:2006/12/15(金) 10:53:23
>>304-305
自作自演乙

307 :デフォルトの名無しさん:2006/12/15(金) 22:38:25

map関数がわからん
使うだけなら簡単なんだけど、型の宣言がつじつま合わないというか
とにかく納得できない

ふつうのHaskellプログラミングみながら勉強してんだけど
ここで3〜4日停滞してる

square n = n * n
map :: (a -> b) -> [a] -> [b]
map square [1, 2, 3]

この場合の「map関数」の宣言、最初の「a」が「square関数」を指しているのか?
@(a -> b)の部分で「square 1」「square 2」「square 3」と計算して
A???


308 :デフォルトの名無しさん:2006/12/15(金) 22:51:17
>>307
a->bはaを受け取ってbを返す関数の型。
mapは「aを受け取ってbを返す関数」とaのリストを受け取って、bのリストを返す関数。
a->bにあたるのはsquareだけだよ。

309 :デフォルトの名無しさん:2006/12/15(金) 23:00:55
Haskel 全く知らんけど、それって

map :: (a -> b) -> ( [a]  -> [b] )
(map square) [1, 2, 3]

ってこと(文法も知らんが)?


310 :307:2006/12/15(金) 23:53:33
>a->bにあたるのはsquareだけだよ。
ソウイウコトカ!!!
スッキリー、スッキリ-

311 :デフォルトの名無しさん:2006/12/15(金) 23:56:33
>>309
そうそう。haskellの多変数関数は関数を値とする一変数関数。
文法もそれでもあってるはず。

312 :デフォルトの名無しさん:2006/12/16(土) 13:01:08
ところでkleisliの読み方がわからないんですがクライスリ?

313 :デフォルトの名無しさん:2006/12/16(土) 16:38:02
Hugsのcompile.cなど一部のC source fileは
-O2無しでcompileされるようにMakefileinが書かれているけど
C compilerの最適化の副作用を避けるため等のなにか理由がある?

314 :デフォルトの名無しさん:2006/12/16(土) 23:10:46
どうだろう。
変数がレジスタに乗ってしまってメモリ上から消えると、
GCを前提とした言語処理系では問題になることがあるみたいだが。

315 :デフォルトの名無しさん:2006/12/17(日) 09:47:59
>>314
それはない。
しかし、レジスタ上だろうがメモリ上だろうが、変数が元の値ではなく
加工された値でしか存在しないという状況はあり得て問題になる。

316 :デフォルトの名無しさん:2006/12/17(日) 16:10:40
>>313-315
ある特定の処理系の組み合わせで問題が起きることはあるかもしれないが、
常に問題が起きるってことはない。ソースコードが間違えていないなら、ね。
ソースコードは間違えているけど「ある処理系では問題が起きない」てのは
よくある話。

-O2の付け忘れでなければ、まずいコードになっているのかも?


317 :デフォルトの名無しさん:2006/12/17(日) 21:48:39
volatile は役に立たんのけ?

318 :デフォルトの名無しさん:2006/12/17(日) 22:17:14
>>317
役に立つ。というか必要なところにvolatileがないのはダメだろ。
スレ違いなんでこのへんで


319 :デフォルトの名無しさん:2006/12/18(月) 23:32:54

だれかHaskellの再帰について教えて
くわしく、わかりやすく、ていねいに


320 :デフォルトの名無しさん:2006/12/18(月) 23:53:40
aaa :: Int -> Int
aaa a = aaa (a+1)

321 :デフォルトの名無しさん:2006/12/19(火) 00:01:57
let
  空 = 色
  色 = 空
in Data.Set.singleton 空

322 :デフォルトの名無しさん:2006/12/19(火) 00:07:22

わからん
おまえの説明はまったくわからん大滝 秀治)


323 :デフォルトの名無しさん:2006/12/19(火) 01:01:50
再帰という概念がわからないのか、それとも Haskell における再帰の取り扱いがわからないのか、どっち?

324 :デフォルトの名無しさん:2006/12/19(火) 01:16:38
Javaの再帰はいちおう書ける
スマンがねる
良レスに期待

325 :デフォルトの名無しさん:2006/12/19(火) 09:06:05
期待されても困るよ(笑)
というか、再帰のプログラムが書けるのなら、なおさら何が疑問なのかがわからん。

http://www.shiro.dreamhost.com/scheme/docs/tailcall-j.html
とかでどうだ。Haskellじゃないけど。

326 :デフォルトの名無しさん:2006/12/19(火) 16:44:17
>>324
とりあえず、再帰を身体にしみこませる必要があると思うんだ。

Little Schemer
http://www.amazon.co.jp/exec/obidos/ASIN/0262560992

Scheme手習い(上記の本の邦訳。入手困難)
http://www.fukkan.com/fk/VoteDetail?no=6462

Haskellはそのあとでも十分。


327 :デフォルトの名無しさん:2006/12/19(火) 17:07:27
再帰を身体にしみこませるのにHaskellを使わない理由があるのか?

328 :デフォルトの名無しさん:2006/12/19(火) 17:16:33
prolog

329 :デフォルトの名無しさん:2006/12/19(火) 17:42:59
325を読んで疑問に思ったのだが、
hoge n 0 = n
hoge n c = hoge (n + 1) (c - 1)
hoge2 0 = 0
hoge2 c = 1 + hoge2 (c - 1)
hogeは末尾再帰だと思うのだが、hoge2も最後にhoge2があるから末尾再帰なのだろうか。
それとも、1 + hoge2が最後の処理だから末尾再帰じゃない、っていう解釈をするのかな?

330 :デフォルトの名無しさん:2006/12/19(火) 17:49:28
>>329 hoge2 は末尾再帰ではない.

331 :329:2006/12/19(火) 19:13:04
>>330
ありがとう。
それにしてもレスが速いな(・∀・;)

ついでだから実行速度を測ってみた。
最適化しないとhogeの方が若干速いが、-Oをつけると同じ速さになる。
なんか切ないな

332 :デフォルトの名無しさん:2006/12/19(火) 19:32:06
>>331
Haskell では末尾再帰について特に大きなメリットはない。
普通は末尾再帰は逐次計算していけるのから嬉しいのだが、
Haskell は最外簡約を取るので、逐次計算は行われない。

333 :デフォルトの名無しさん:2006/12/19(火) 19:48:33
>>332
>Haskell では末尾再帰について特に大きなメリットはない。
そんなことはないと思うが。
Haskellは常に最外簡約というわけではないし
(GHCは正格性解析の結果に基づいて簡約順序を決める)、
最外簡約の場合でも、クロージャを作って別の関数に渡す代わりに
直接呼んでしまえるのでコストが小さい。

334 :デフォルトの名無しさん:2006/12/20(水) 01:39:23
なぁなぁ、教養科目で記号論理学だけやったんだが。
推論規則の演習とかやった記憶もかすかにあるんだが。
圏論とかサパーリ。
もとが哲学寄りの文学屋なので、そっち方面の記号論は、まぁわかるんだが。
そんな俺様にお勧めのHaskell文献があったら教えてください。

335 :デフォルトの名無しさん:2006/12/20(水) 01:54:26
Haskell文献?それって言語解説書?

336 :デフォルトの名無しさん:2006/12/20(水) 01:55:04
テンプレにあると思うが。

337 :334:2006/12/20(水) 02:01:53
>335
ごめん。言語解説書ではなくて、背景の理論のほう。
とりあえず俺の勉強したなけなしの記号論理学が
どこをどう通ったらHaskellになるのか見てみたい。

338 :デフォルトの名無しさん:2006/12/20(水) 02:06:18
>>337
まず、歴史的にはMLの方が先だから、MLから入ってみたら?

339 :デフォルトの名無しさん:2006/12/20(水) 05:01:09
>>337
PierceのTAPLでも嫁
それが理解できなければどうせその先も理解できない

340 :デフォルトの名無しさん:2006/12/20(水) 06:22:58
HASKELLってほんとに綺麗だよね。
いつかみんながHASKELLを使う世の中がきたらいいな。

341 :デフォルトの名無しさん:2006/12/20(水) 07:31:12
ひとつお聞きしたいのですが、
Haskellerで元Lisperの方ってどれくらいいるんでしょうか?

元Lisperの方でHaskellに移ってきた方は、Haskellのどのあたりに惹かれました?

342 :デフォルトの名無しさん:2006/12/20(水) 08:04:58
LISPはスーパーな人が沢山いて、敵う気がしなかった。
Haskellはまだ大半が素人みたいなので鞍替えした。

343 :デフォルトの名無しさん:2006/12/20(水) 11:15:15
>>341
Haskellを知っている人ならほぼ確実にLispも知ってるよ。

344 :デフォルトの名無しさん:2006/12/20(水) 11:25:49
俺 Lisp は知ってるけど Lisper じゃないな

345 :デフォルトの名無しさん:2006/12/20(水) 11:30:54
言語の違いでプログラマが変わるわけでもあるまい

346 :デフォルトの名無しさん:2006/12/20(水) 11:54:30
用途によっていくつかの言語使い分けるから、何々erではないな

347 :デフォルトの名無しさん:2006/12/20(水) 14:37:22
>>337
Haskel は全く知らんけど、その記号論理学とはあまり関係無いんじゃないか?

Lisper 以外の大半人たちは高階の理論を記述する際に階によって用語を使い分ける。
ので集合とか射とか群とか圏とかいろんな言葉が出てくるわけだけど、
やってることはλと(暗黙の)括弧が多いか少ないか程度の違いのような気がするので、
そう大上段に構えるほどの物じゃないような・・・

348 :デフォルトの名無しさん:2006/12/20(水) 14:40:39
あまたあるプログラミング言語の一つ

349 :デフォルトの名無しさん:2006/12/21(木) 00:41:18
>>341
9割が両刀
1割は悪い人にだまされて最初の言語がHaskellというケース

350 :デフォルトの名無しさん:2006/12/21(木) 01:14:50
Lispを最初にやってたほうがいいんかな?
Haskellだけでも十分おもしろいけど。

351 :デフォルトの名無しさん:2006/12/21(木) 01:17:52
>>349
C++からLispを経由せずにHaskellをやりだした者ですが、
私をだました悪い人はどこですか?

352 :デフォルトの名無しさん:2006/12/21(木) 01:41:26
Javaだけなんとかギリギリできるけど
Haskellも勉強してるよ

オブジェクト指向しか知らない世代なわけだけど
そこに固まらないうちに関数型も慣れときたいなぁと思って

353 :デフォルトの名無しさん:2006/12/21(木) 01:58:04
先輩が Lisper で、静的型と動的型の違いを勉強するために Haskell も合わせて
勉強するように言われました。

354 :デフォルトの名無しさん:2006/12/21(木) 01:59:43
>>350
関数型言語習い始めだと、副作用なしというプログラミングスタイルは辛いと思う。
まずは副作用ありの関数型言語で慣れておくと良いと思う。

355 :デフォルトの名無しさん:2006/12/21(木) 02:50:42
>関数型言語習い始めだと、副作用なしというプログラミングスタイルは辛いと思う。
議論することじゃないが、俺はそうは思わない、という意見だけ表明しておく。

356 :ド素人:2006/12/21(木) 02:53:37

盛り上がってるとこ悪いんだけどくだらない質問
精製されたexeファイルをGHC入れてない人に実行させるにはどうすりゃいいの?

main = print $ map square [2, 5, 3, 1, 10]
square n = n * n

たとえば↑みたいなプログラムをexeにしたって実行できないよね?
どういうのならできるんだ???


357 :デフォルトの名無しさん:2006/12/21(木) 02:54:35
Lisp出来る人から見てHaskellの優れてるとこってどこ?
逆にLispのほうが優れてると思うところは?

358 :デフォルトの名無しさん:2006/12/21(木) 06:27:28
>>356
問題なく実行できる。

exeファイルをダブルクリックしたけど一瞬だけコマンドプロンプトが開いてすぐに閉じたから実行できなかったと思ったんじゃないの?
それだったらgetCharでも付けて入力待ちさせりゃいい。
main = do { print $ map square [2, 5, 3, 1, 10]; getChar }
square n = n * n

359 :デフォルトの名無しさん:2006/12/22(金) 00:46:51
低レベルな質問2
main = do cs getContents
       putStr cs

exeファイルにしてコマンドプロンプトで下のように実行しようとしてもできない
ghc out.hs -o out
out 引数(文字列)

なんで?
ふつうのHaskellプログラミングには
実行するには Ctrl - Z + Enter って書いてるけど、これどういう意味?

360 :デフォルトの名無しさん:2006/12/22(金) 01:04:25
>>359
そのぷろぐらむだと引数は関係ない。
outを実行すると入力待ちになるから、適当な文字列を何行かタイプする。
入力を終了したくなったら、まず、カーソルが行頭にある状態で
Ctrlとzを同時押しして(^Zという表示が現れるはず)、
つぎにEnterキーを押せば良い。

361 :デフォルトの名無しさん:2006/12/22(金) 08:44:55
>>357 どっちもイイね。
Haskell の優れてるところ: 型システムによる安心感、純粋関数型なところ
Lisp の優れてるところ: マルチパラダイムなところ、あんま理屈とか考えずに言語を気軽にカスタマイズできるところ

362 :デフォルトの名無しさん:2006/12/25(月) 11:44:14
>>357
使い方次第

363 :デフォルトの名無しさん:2006/12/25(月) 18:05:58
>>362
日本語でおk

364 :デフォルトの名無しさん:2006/12/25(月) 20:14:12
>>361
Haskellの優れているところ:遅延評価、モナド

365 :デフォルトの名無しさん:2006/12/25(月) 22:18:13
Haskellの劣っているところ:遅延評価、モナド

366 :デフォルトの名無しさん:2006/12/25(月) 23:05:14
遅延評価は言語の進化過程で最新の部類だぞ・・

367 :デフォルトの名無しさん:2006/12/25(月) 23:19:58
モナド(というかdo記法)大好き。
優れているかは別として、Haskellでいちばん好きな機能かも。

368 :デフォルトの名無しさん:2006/12/25(月) 23:59:33
なにが遅延評価だ
ここはもうビチョビチョじゃねーか

369 :デフォルトの名無しさん:2006/12/26(火) 00:21:36
>>367
doは>>=を使うよりも見栄え良く書けるが、
代入型言語の特徴を残す記法なので、
不満に思う人も多いと思う。

370 :デフォルトの名無しさん:2006/12/26(火) 00:54:35
>>369
似たような意見をwebで時々見掛けるが、よく理解できない。
命令的プログラミングをしたいとき、それに適した構文を
使えるのだから、単純に良いことのように思える。
それとも、命令的プログラミングをサポートしない言語の方が
良いという考えなんだろうか。

371 :デフォルトの名無しさん:2006/12/26(火) 01:29:44
>>370
「関数」で統一された世界を作れば、何か良いことがあるに違いない
(古風な言い方である自動プログラミング、とか、構造の視覚化がしやすくなる、とか、etc..)
と思う人が多いからじゃないかな?


372 :デフォルトの名無しさん:2006/12/26(火) 01:31:33
>>352
http://hp.vector.co.jp/authors/VA000092/jokes/strup.html

373 :デフォルトの名無しさん:2006/12/26(火) 02:48:41
自分はどするよりコンビネータでモナモナする方がいいな。


374 :デフォルトの名無しさん:2006/12/26(火) 14:22:41
どするって流行らせたいの?w

375 :デフォルトの名無しさん:2006/12/26(火) 22:44:22
>>=は横に長くなっちゃうのがいまいちだけど、見た目がかっこいいからついつい使ってしまう

376 :デフォルトの名無しさん:2006/12/27(水) 00:03:09
do {
a <- hoge;
hoge2 a;
hoge3 a
}



hoge >>=
\a ->
hoge2 a >>
hoge3 a

どっちがみやすいですか?

377 :352:2006/12/27(水) 01:44:38
>>372
この記事おもしろいねw

真実だとしても、結局のところ今はPCの性能の上昇とか
言語自体の進化によってオブジェクト指向は機能的で合理的な言語になってるよね?

たしかに、
「あるプロジェクトのコードを再利用した話なんて聞いたことない」とか、
「正しく継承させるためには設計だけでCの3倍もの時間かかる」とか、
超笑えるねw

当たり前に思ってきた(教えられてきた)コトって、
そのまま信じちゃうからこういう記事読むとオラ、ワクワクしてきたぞ


378 :デフォルトの名無しさん:2006/12/27(水) 02:04:04
Haskellだと10倍の時間をかけて10分の1の行数ですみます。

379 :デフォルトの名無しさん:2006/12/27(水) 02:05:25
数十万行のsoftware開発してきた身からすると
あの内容はあながち冗談に思えなくて泣けてきた。
彼がinterviewであんなこと言うはずは無いだろうけどさ

380 :デフォルトの名無しさん:2006/12/27(水) 02:32:15
>>378
チャッチャと書けるようになったらダイブ頭よくなってるかな?

381 :デフォルトの名無しさん:2006/12/27(水) 03:01:21
何を創ったかによるだろ

382 :デフォルトの名無しさん:2006/12/27(水) 03:12:31
だよなー
もっとHaskeりたいんだけど、やさしく教えてくれるかわいいコいないかな

383 :デフォルトの名無しさん:2006/12/27(水) 03:14:55
ギャルにHaskellは引かれるだけ
禁句だ。

384 :デフォルトの名無しさん:2006/12/27(水) 22:11:40
アホか
Haskellを教えてくれるギャルを探すんだよ

385 :デフォルトの名無しさん:2006/12/27(水) 22:47:06
                 ∩
                 | |
                 | |
        ∧_∧   | |  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ( ´Д`)//  < ⊥が返ると思います!
      /       /    \        
     / /|    /        ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  __| | .|    |
  \   ̄ ̄ ̄ ̄ ̄ ̄ ̄\
  ||\             \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              || 

112 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)