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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/03/18(日) 18:56:37
haskell.org
http://www.haskell.org/

日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
http://www.shido.info/hs/

過去ログ
関数型プログラミング言語Haskell
Part1 http://pc.2ch.net/tech/kako/996/996131288.html
Part2 http://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 http://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 http://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 http://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 http://pc11.2ch.net/test/read.cgi/tech/1162902266/

・2chの仕様により、行頭の半角スペースは表示されません。
 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
0002デフォルトの名無しさん2007/03/18(日) 18:57:33
関連書籍
・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/
0003デフォルトの名無しさん2007/03/18(日) 18:59:05
関連スレ
・関数型言語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/
・Lisp Scheme Part16
 http://pc11.2ch.net/test/read.cgi/tech/1172404795/
・【入門】CommonLispその2【質問よろず】
 http://pc8.2ch.net/test/read.cgi/tech/1140012484/
・Emacs Lisp 2
 http://pc8.2ch.net/test/read.cgi/tech/1068467385/
0004デフォルトの名無しさん2007/03/18(日) 19:01:59
・日本語の扱いについて

Haskell98によると、Charは一つのUnicode文字を表す(6.1.2)。
これに従って、比較的新しいHugsやGHC(6.4系を含む)ではCharは32ビット整数になっている。
ただし、どちらも入出力に際しての変換が完全でない。具体的には、
・ソースコード中の文字列リテラル
・System.IOライブラリでの入出力
が問題になる。

1. GHC6.4.2以前
ソースコード・入出力ともLatin-1を仮定する。Latin-1ではバイト値と
コードポイントが一致するので、入力時には外部エンコードの各バイトがそのままCharに
入り、出力時にはCharの下位8ビットのみが出力されるような実装になっている。
このため、あるエンコーディング(Latin-1とは限らない)の入力をgetLineで受け取り、
それをそのままputStrで表示すれば、入力時とおなじエンコードにおいて正しく表示される。
これを利用して、[Char]を、本来のコードポイントの列としてではなく、特定のエンコードの下での
バイト列として使うことができる。ただし文字列リテラルについては、GHCはLatin-1として
不正な文字を受け付けないので、EUC-JPのような例外を除くと、単純にリテラルを使うことはできない。

2. GHC6.6
ソースコードにはUTF-8、入出力にはLatin-1を仮定する。このため、EUC-JPでリテラルを直に
書くことはできない。

(続く)
0005デフォルトの名無しさん2007/03/18(日) 19:02:32
(続き)

3.最近のHugs(非WindowsかつCのwchar_tがUnicodeの環境、というかLinux)
ソースコード・入出力ともロケールのエンコードを利用する。

4.最近のHugs(Windows)
ソースコード・入出力ともLatin-1を仮定する。ただし文字列リテラルにShift-JISを使ってもエラーにならない。

5.最近のHugs(それ以外)
未調査。

・結局どうするか。
規格どおりにCharにUnicodeを入れるか、Charを単なるバイトとして扱うかの二択。

i. CharをUnicodeとして扱う
(3)以外の場合入出力で変換が必要。(2)または(3)以外の場合文字列リテラルでは
明示的なエスケープ(たとえば"\22234")が必要。

ii. Charをバイトとして扱う
(3)ではファイルをバイナリモードで開くなどの対策が必要。(1)でEUC-JPを使う場合と(4)
を除き文字列リテラルでは明示的なエスケープ(たとえば"\143\153")が必要。
lengthやisAlphaのような関数、およびwin32パッケージの関数(win32API)が正しく動作しない。
0006デフォルトの名無しさん2007/03/18(日) 19:12:44
>>1
乙。

で、前スレのネタを投下

989 名前:デフォルトの名無しさん[sage] 投稿日:2007/03/18(日) 16:51:08
hoge (x:xs) = fuga x : hoge xs
は、
データ構造の実装を直接触る、汚い・忌むべきコードなんだよ!
hoge xs = cons (fuga.head xs) $ hoge.tail xs
みたいにちゃんと関数で書くべきなんだ!!

もちろん、
bar Just a  = foo a
bar Nothing = baz
もダメダメだ!!!
0007デフォルトの名無しさん2007/03/18(日) 19:25:47
単なる皮肉だと思うけど
0008デフォルトの名無しさん2007/03/18(日) 21:50:15
じゃあそれが出来ないStringableがダメダメって事で。
0009デフォルトの名無しさん2007/03/18(日) 22:26:43
型クラスとかを弄った程度じゃどうにもならん。

(:)の引数にMyStringも取れるようにしようと思うと、

class List container element | container -> element where
 (:) :: element -> container -> container

instance List MyString Char where
 (:) = cons_mystring

といった感じで(:)を総称関数にしておかないといけないけど、無理。
もし、それが出来るようになったとしても、パターンマッチは出来ない。
だって、(:)はMyStringのデータ構築子じゃないから。
0010デフォルトの名無しさん2007/03/18(日) 22:58:11
データ構築子じゃないとマッチングできないなら、
演算子でマッチングできるようにしてしまえばいいじゃない。

ただし、逆関数を定義する条件で。
0011デフォルトの名無しさん2007/03/19(月) 03:39:45
機能的にはそれで解決としても、性能的には。。。??
0012デフォルトの名無しさん2007/03/19(月) 05:57:58
Scalaにはextractorって機能があってパターンを定義できるね。
http://www.scala-lang.org/intro/extractors.html
0013初心者2007/03/20(火) 06:49:06
パターンマッチのコード書いてみたけどうまくいきましぇん
blueと打ってもblueと返ってきます
なんででしょーか

main = do cs <- getContents
       putStr $ aaaa cs

aaaa :: String -> String
aaaa cs = if cs == "blue" then "sky" else cs
0014デフォルトの名無しさん2007/03/20(火) 09:23:32
話題にしてるHaskellのパターンマッチではなくて、Stringの比較ね。
putStr $ aaaa cs

putStr $ aaaa.head.lines $ cs
とかしたらskyと返るかと。
あるいは、getContentsをgetLineにしてとか。
0015デフォルトの名無しさん2007/03/20(火) 11:43:00
どういう意図でgetContentsを使ったんだろ・・・。
延々とユーザーに入力させたいのか、入力は1回だけでいいのか。
0016デフォルトの名無しさん2007/03/20(火) 12:43:14
延々と入力させたいなら interact aaaa でもOKだな。
0017162007/03/20(火) 12:55:26
OKじゃないや。interactの動作を勘違いしてた。
0018132007/03/21(水) 00:01:34
ふつうのHaslekellプログラミング読んで、
map関数までしかやってないから、自然にgetContentsになりました

なんすか、aaaa.head.linesって
0019デフォルトの名無しさん2007/03/21(水) 00:43:49
linesしたものをheadしたものをaaaaする関数。
ふつけるにも出てない訳がない。
0020デフォルトの名無しさん2007/03/21(水) 00:45:19

「.」も「$」も同じ効果があるの?
0021デフォルトの名無しさん2007/03/21(水) 01:03:08
($) :: (a -> b) -> a -> b
$は最後までの括弧の代わり。
x$yの値は、(値yでの)関数xの「結果」。

(.) :: (b -> c) -> (a -> b) -> a -> c
.は関数の合成。
x.yの値は、関数yの結果を関数xに掛ける「関数」。
0022デフォルトの名無しさん2007/03/21(水) 01:12:29
×掛ける
○適用する
0023デフォルトの名無しさん2007/03/21(水) 01:13:45
難しいよママン
0024デフォルトの名無しさん2007/03/21(水) 01:41:50
a $ b $ c $ d は (a . b . c) d と書ける。
mapとかで処理を渡すときに
 map (\x -> a $ b $ c $ d)
と書く代わりに
 map (a . b . c)
とちょっとだけ楽ができる。
日本語で読むと「cしてからbしてaする」。
なぜか普通のaしてからbしてcするようなやつはない。>>=が似たようなもんだけど。
0025デフォルトの名無しさん2007/03/21(水) 01:44:28
 map (\x -> a $ b $ c $ d) の時点で意味不明な僕はスレ違いでしょうか
0026デフォルトの名無しさん2007/03/21(水) 01:49:05
それを読んで意味不明でもスレ違いではないが、
それを理解すべく調べて考えようとしないなら板違い。
0027デフォルトの名無しさん2007/03/21(水) 02:39:32
×(\x -> a $ b $ c $ d)
○(\d -> a $ b $ c $ d)
ってことでは?
0028デフォルトの名無しさん2007/03/21(水) 04:17:34
>>24
> なぜか普通のaしてからbしてcするようなやつはない。

つControl.Arrow

map (a >>> b >>> c)
0029デフォルトの名無しさん2007/03/21(水) 05:50:08
彼女とはaの前にcしちゃいました
0030デフォルトの名無しさん2007/03/21(水) 06:17:54
でもお金はきちんと払いました
0031デフォルトの名無しさん2007/03/22(木) 15:19:29
GHCでSDLを使おうと思って、
ttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL-0.4.0
にあるSDLのラッパーをインストールしようとしたんですけど、
下みたいになって途中で止まっちゃうんですけど、何ででしょう……。

C:\downloads\SDL-0.4.0>runghc Setup.lhs build
Preprocessing library SDL-0.4.0...
C:/ghc/ghc-6.6/libHSrts.a(Main.o):Main.c:(.text+0x1b): undefined reference to `_
_stginit_ZCMain'
C:/ghc/ghc-6.6/libHSrts.a(Main.o):Main.c:(.text+0x3f): undefined reference to `Z
CMain_main_closure'
collect2: ld returned 1 exit status
linking Graphics\UI\SDL\General_hsc_make.o failed
command was: C:\ghc\ghc-6.6\bin\ghc.exe -lSDL Graphics\UI\SDL\General_hsc_make.o
-o Graphics\UI\SDL\General_hsc_make.exe
Setup.lhs: got error code while preprocessing: Graphics.UI.SDL.General
0032デフォルトの名無しさん2007/03/22(木) 16:00:58
>>31
念のために聞くけど、buildの前にconfigureしてるよね?
0033312007/03/22(木) 16:30:23
はい、configureはしてます。長くなると思ったのでログは書きませんでしたが、いちおうこんな感じで。
Configuring SDL-0.4.0...
configure: C:\ghc\ghc-6.6\bin\ghc-pkg.exe
configure: Dependency base-any: using base-2.0
configure: Using install prefix: C:\Program Files
configure: Binaries installed in: C:\Program Files\Haskell\bin
configure: Libraries installed in: C:\Program Files\Haskell\SDL-0.4.0\ghc-6.6
configure: Private binaries installed in: C:\Program Files\SDL-0.4.0
configure: Data files installed in: C:\Program Files\Common Files\SDL-0.4.0
configure: Using compiler: C:\ghc\ghc-6.6\bin\ghc.exe
configure: Compiler flavor: GHC
configure: Compiler version: 6.6
configure: Using package tool: C:\ghc\ghc-6.6\bin\ghc-pkg.exe
configure: Using ar found on system at: C:\ghc\ghc-6.6\bin\ar.exe
configure: No haddock found
configure: No pfesetup found
configure: No ranlib found
configure: Using runghc found on system at: C:\ghc\ghc-6.6\bin\runghc.exe
configure: No runhugs found
configure: No happy found
configure: No alex found
configure: Using hsc2hs: C:\ghc\ghc-6.6\bin\hsc2hs.exe
configure: No c2hs found
configure: No cpphs found
configure: No greencard found
0034デフォルトの名無しさん2007/03/25(日) 04:38:43
で、Stringableはリストになるの?
0035デフォルトの名無しさん2007/03/25(日) 14:30:21
型が充実してるって言うから、ちょっと勉強してみたけど、
簡単に実行時例外が発生するじゃん。なんだよこれ。

コンパイルが通れば論理的な誤り以外、
ほとんどバグが取れてるのかと思ったのに。 

実行時に読み込むデータとかの誤りなら仕方ないにしても、
そんなのない静的にすべて決まってるプログラムでも
実行時例外が起きえるなんて、全然だめじゃんwww
0036352007/03/25(日) 14:46:59
すいません。こっちに書こうとして誤爆しました。
【数学者】Haskellはクソ言語【オナニー】
http://pc11.2ch.net/test/read.cgi/tech/1128011645/
0037デフォルトの名無しさん2007/03/25(日) 23:25:57
そっちのスレは見てないんだが head [] が実行時エラーになるという話を言っているのかな。

HLIST のような方法を取ることでその辺は解決可能じゃないかと思うんだけど、
どうだろう(head [] は型エラーとして検出できる)。
0038デフォルトの名無しさん2007/03/27(火) 02:02:44
同じモジュール内で、複数の代数的データ型に、
同じ名前のフィールドラベルを持たせるのはダメなんでしょうか。
セレクタがぶつかっているようです。

フィールドラベルを付けずに、classを作ってセレクタ相当の関数をいちいち実装するしかないんでしょうか。
セレクタはそれでよいとして、フィールドラベルを使ったパターンマッチはどうすればよいでしょうか。

型だけだと、それが何であるのかの情報が(セレクタしか)なくなって、可読性に不安を感じてしまいます。


あと、ふつけるを読了したのですが、
この後はHaskell98Reportを読むしかないのでしょうか。
かなり古くなってるみたいですけど。
0039デフォルトの名無しさん2007/03/27(火) 10:24:55
>>38
>同じ名前のフィールドラベルを持たせるのはダメなんでしょうか。
ダメ。

>フィールドラベルを付けずに、classを作ってセレクタ相当の関数をいちいち実装するしかないんでしょうか。
>セレクタはそれでよいとして、フィールドラベルを使ったパターンマッチはどうすればよいでしょうか。
フィールド名になんらかの接頭辞を付けて区別するのが常套手段だと思う。
フィールド名の名前空間がモジュール全体だと考えれば納得しやすいかもしれない。
それでも馬鹿馬鹿しいことには変わりないので、改善案がいくつもでていたはず。

>型だけだと、それが何であるのかの情報が(セレクタしか)なくなって、可読性に不安を感じてしまいます。
意味が分からん。

>この後はHaskell98Reportを読むしかないのでしょうか。
なんでも好きなものを読めば良いと思うが、Haskell98のうちふつけるで
取り上げられていない部分を知りたいなら、「やさしいHaskell入門」はどうだろう。
半分以上は既に知っていることだと思うので、飛ばしながら。
レポートは言語の詳細な規定を知りたいとき以外読まなくても良いと思う。
他には、GHCのマニュアルに、GHCに実装されている言語拡張について書いてある。

>かなり古くなってるみたいですけど。
Haskell98についての現役の定義であって、その意味では古くない。
ただ、Haskell98への拡張で、かなり広く使われている機能もあるので、
それについては別のものを読む必要がある。
0040デフォルトの名無しさん2007/03/31(土) 11:10:04
Haskellの界隈いったい最近どうなってるの?
なんか雰囲気がどんどんどんどん変になってるんだけど。
圏論もういいじゃん。普通にプログラミングとかやらねーの?
0041デフォルトの名無しさん2007/03/31(土) 11:19:43
普通にプログラミングやってるが。
0042デフォルトの名無しさん2007/03/31(土) 12:39:28
Fランク大の落ちこぼれが
東大学部生の教養プログラミングに
物申す展開か
0043デフォルトの名無しさん2007/03/31(土) 17:33:50
> Fランク大の落ちこぼれが
> 東大学部生の教養プログラミングに
> 物申す展開か
インターネットだと顔が見れないし、無駄に距離感が無いし、
こういう認識は大事である。
0044デフォルトの名無しさん2007/03/31(土) 20:52:49
>>40
今後の関数型言語界のために基礎を築いている段階。
ゆくゆくの関数型言語プログラミングがどうあるべきかを論じるには基礎研究が大切なの。
お分かり?
0045デフォルトの名無しさん2007/03/31(土) 20:58:59
H++マダー?
0046デフォルトの名無しさん2007/04/01(日) 01:01:33
「圏論もういいじゃん」は「基礎研究が大切なの」と反論されて当然ですが、
「普通にプログラミングとかやらねーの?」はまっとうな質問だと思います。
仮説検証用のごく小さなプログラムしか必要としない研究もあるでしょう。
しかしプログラミング言語は本来コンピュータに何らかの仕事をさせる手段であって
理論研究のためだけの道具ではないはずです。

大きなソフトウェアを実際に書いてみないと発見できない問題はたくさんあります。
昔、IBMが九州医大のシステムをSmalltalkで作ろうとしてSmalltalk界の有名人を
人月数百万円でかき集めたにもかかわらず失敗に終わった事がありました。
言語仕様を隅々まで把握しアーキテクチャに関する持論を唱えていた有名人達は
大規模システム開発を成功させる方法を知らなかったという事になります。
関数型言語が実用言語として広く使われるようになるためには理論研究だけでなく
実用ソフトウェアを書いて問題を見つけていく事も欠かせないと思います。

私からも改めてお聞きします。
Haskellでどんなソフトウェアを作っていますか?
0047デフォルトの名無しさん2007/04/01(日) 01:12:29
九大病院のSmalltalk事件はデスマーチが先。その状態からSmalltalk界の
グルをかき集めたけれど、手遅れだったというだけのこと。

それから、そのグルというのは現場の人達であり、理論屋ではなかった。
そもそもSmalltalkは学術的な面で特段価値のある言語ではないからね。
0048デフォルトの名無しさん2007/04/01(日) 01:13:20
まず、勘違いしないでほしいのは、haskellは研究用の言語ということ。
数多くの関数型言語があふれる中で標準として決められた言語。
研究の集大成としての言語。
実用が二の次だというのはしかたがないと思う。
0049デフォルトの名無しさん2007/04/01(日) 01:58:53
>haskellは研究用
マジデスカ (゚ロ゚)!!!!
職業プログラマーとしてはショック
0050デフォルトの名無しさん2007/04/01(日) 02:02:48
                      , - ─- 、_
                /        `丶
                rー‐<::/ ン-―ー- 、   、 \
           {(こ 〆.:::/  ____ \ ヽ..::::ヽ
           __/'´/  〃7了.:.:.:.:.:.:.:.:`ヽ.j ::ヤ¬寸
         /,イ>/ .:::/,':::{:::::!:::::::::::::::::ヽ ::|:. ::::Vヽ_,イ
         レ/,イ ::/ :{:ハ\{ ::、::ヽ ::::::}::_|_: :::::l >::|
          {/::| :!{.::ィ'f坏ト\{ヽ ,><ム:!:::::::: Kヽ:ト、
            |::::ヽ::i:ヽi. r'_;メ  ヽ´ イ圷ハ|::::::::::|\/ヽ>
            |i:::::::トl::ハ.     ,    r';ン´j::::::::: l: V
            |i::::::::!:::: ヘ  {>ーァ   /:!::::::::/::/
            lN:ヽ:ヽ::',:::ヽ、ヽ _,ノ  ,.ィ::/::::::/ /
              ヾ /}::}八::::ヽ>.-‐か/7::/∨    あんた二十歳超えてるくせに処女なんだ?
          r<¨ リ\`ヽ、\__ {  〉/イ l  )}    いつもみたいに寂しく一人で寝てなさいよ
          f⌒ \ \ヽ  )' \ニニ∧ | |!彡ヘ   私はキョンに抱きしめられながら寝るからさあ
          |    \ ヽム    ヽ‐' .| | }ヘ,__,イ
         r-ヽ     ̄ )\     Vrj/ ̄ヽ ヽ
         |  \     // /)ミ ー-∨   / ̄ ヽ
         |   (>―‐'/ /勺ヽ¨ア    /    }
         |   \三三‐'ノ ^ヽ/   /-―一 '

0051デフォルトの名無しさん2007/04/01(日) 05:40:56
【注意と警告】

関数型言語コミュニティの一員として、大切なお知らせがあります。
>>46-47 は、現実世界で多数のトラブルを巻き起こしている人物(東京在住44歳)
ですので、きっぱりとスルーするのがよろしいでしょう。

公衆の場でいきなり赤の他人相手に、第三者の失敗例を持ち出して
ベラベラと中傷しだす人物の人間性などというものは、容易に想像がつく事ですし、
また万が一そのような人物と関わったら、多大なトラブルと時間的消耗を蒙る
事は、火を見るより明らかです。

実際これまで現実のビジネスで、多くの人々が彼の言動に迷惑してきました。
その中には、彼と一緒に仕事をしていた一流大学出身の経営者や、エンジニア、
サイエンティスト、大学病院関係者等も含まれています。

彼の人間性を確認するには、ネット上での彼自身がこれまで行ってきたスレ荒し
の例を見れば十分でしょう。
・デザインパターンスレ http://pc11.2ch.net/test/read.cgi/tech/1141846078/
 特別な利害関係がきっかけで、繰り返し議論妨害を行っているのが彼です。
 彼の議論妨害には、精神性疾患の俗称の連呼という特徴があるので一目瞭然です。

私が察するに、彼の症状は「自己愛性人格障害」と呼ばれるものと存じます。
ここでは詳しく述べませんが、ピンときた方は症例を調べてみるとよろしいでしょう。

最終的な判断は聡明なみなさんにお任せ致します。それでは。
0052デフォルトの名無しさん2007/04/01(日) 05:53:53
なんという初厨の断末魔
0053デフォルトの名無しさん2007/04/01(日) 05:57:29
>>52
おい、おっさん
終わってるのはおまえだ
0054デフォルトの名無しさん2007/04/01(日) 06:12:43
はやく病院に逝って適切な処置受けりゃえぇーのに(w
0055デフォルトの名無しさん2007/04/01(日) 06:34:10
HaskellでRSSを引っ張って最新の数件表示するだけのサンプルに挑戦してるけど
かれこれ1ヶ月以上掛かってる。w

XML操作 → HXTでArrowの基礎から挑戦
日付のパース → MissingHを利用
表示 → 今はCGIライブラリで妥協してるけど本当はHAppS使いたい

難しすぎるわ。('A`)
0056デフォルトの名無しさん2007/04/01(日) 07:05:45
お前の学力では無理だから諦めろ

普通一ヶ月もあればツールやアプリの一本位書ける。
0057デフォルトの名無しさん2007/04/01(日) 07:36:41
そりゃどんだけエネルギーを割いてるかにもよるだろ。
ってかなんで煽ってんの?
0058デフォルトの名無しさん2007/04/01(日) 07:36:44
お前スレに張り付いてそんなことばかり言ってるな。
いい加減消えろ。
0059デフォルトの名無しさん2007/04/01(日) 09:03:24
お前にはムリ
0060デフォルトの名無しさん2007/04/01(日) 09:04:54
>>45
っ F#
0061デフォルトの名無しさん2007/04/01(日) 11:10:13
>>55
で、最後に日本語の扱いで泥沼になりそうだな
0062デフォルトの名無しさん2007/04/01(日) 11:10:48
C や Fortran プログラムで保存したバイナリファイルから、
データを読み込んで来て、ビットデータの処理をして
int や double のデータを取得するにはどうするの?

Lisp では、read-byte で読んでファイルを読んで、logand 等を使い、
double 等のデータを取得出来る様にはできてるんだけど、
Haskell ではどのように?
0063デフォルトの名無しさん2007/04/01(日) 11:27:52
まじめな研究に使う研究材料ですので、無駄です。
0064デフォルトの名無しさん2007/04/01(日) 11:41:14
>>62
「ビットデータの処理」って何?

バイナリファイルの操作の道具は整ってない。
とりあえずopenBinaryFileでファイルを開いて、
hGetByte :: Handle -> IO Word8
hGetByte h = liftM (fromIntegral . ord) $ hGetChar h
みたいなのを使ってバイトを読む。
ビット演算はData.Bitsを使う。

あるいは、メモリを直接操作することに耐えられるなら、hGetBufを
使ってバイナリデータをメモリに読み込み、Foreign.Storable.peekで
IntやDoubleとして読み出す。
0065デフォルトの名無しさん2007/04/01(日) 13:45:45
Why People Aren't Using Haskell
http://www.jelovic.com/articles/why_people_arent_using_haskell.htm

初代スレの932が5年前にリンクした上記ページは
Haskell普及のためにHaskellコミュニティがすべき事を提案しています。
1.十分なライブラリを含んだ標準版Haskellディストリを作る
2.研究者サークルから踏み出して熟練プログラマに対して宣伝を行う
3.DDJのような刊行物に記事を書く
4.Haskellで書かれた現実世界向けプログラムを発表する

2冊の入門本が出版されてblogで話題になったおかげで知名度は上がったと思います。
ライブラリの整備が進めば言語ユーザが増えていく事はGaucheが証明しました。
ユーザに言語学習を促すキラーソフトが言語をメジャーにする事はRoRが証明しました。
Haskellも役立つコードを増やせばさらに世間に普及するはずだと信じています。
0066デフォルトの名無しさん2007/04/01(日) 14:12:47
マルチバイト文字の出入力がまともにならん限り英語圏以外での流行など夢のまた夢。
0067デフォルトの名無しさん2007/04/01(日) 14:20:26
勝手にしてくれ。

Lispの時も、当初は数学的な計算モデル=ラムダ計算 を
コンピュータ上で実行するという奇妙なプロジェクトだったが、
実用性を云々して勝手な拡張を始めた段階で「手続き型言語」に堕ち、
そして最後には、特殊な実行メカニズムと市場の狭さが災いとなって
多数派CPU上で実行性能の出ない1マイナー言語となった。

もしHaskellの設計意図を解せぬ人が寄って集ってHaskellをダメにしたら、
その時はまた新しい研究成果を取り入れて、新しい純関数型言語の標準を決めればいい。

だがそんな愚かな事を繰り返す人間はごく一握りしか居ないだろう。
(SymbolicsやLMIでバブル体験した人を除いて)
Lisp, Scheme以降の関数型言語で、実用性を云々するならOcamlでも使っておけばいい。
あれなら10年以上前からゲームもWebブラウザも作っているし、普及度も高い。(Linux配布を通じて)

0068デフォルトの名無しさん2007/04/01(日) 14:24:29
職業プログラマを自称するLisp厨、Prolog厨には
イタイのが多いな。
0069デフォルトの名無しさん2007/04/01(日) 14:28:04
実験的言語、研究用言語に実用性を云々する厨房が寄って来ると
研究用テストベッドの機能が低下して、新しい物を生み出せなくなる。
0070デフォルトの名無しさん2007/04/01(日) 15:07:03
研究目的と実用目的の両方に対応することは本当に出来ないの?
それができないなら早いとこforkしてほしいな。
0071デフォルトの名無しさん2007/04/01(日) 15:13:17
つ Ocaml
0072デフォルトの名無しさん2007/04/01(日) 15:27:11
Haskellでさえ使っていてストレスを感じるので
Ocamlなんて話にならない。
0073デフォルトの名無しさん2007/04/01(日) 15:40:30
pupupu :p

えぇーっと。
そのストレスは「非実用性」に起因するんじゃなかったの?
0074デフォルトの名無しさん2007/04/01(日) 15:45:02
>>72
OCamlの方が君には楽だと思うよ
Cで慣れてる子はHaskellの方が異質に感じるはず。
0075デフォルトの名無しさん2007/04/01(日) 15:47:38
つまり、関数型言語ってのは、
実用に耐えない、穀潰し研究者達の内輪向け妄想オナニー理論ということ。
0076デフォルトの名無しさん2007/04/01(日) 15:50:03
>>75
つまり?
どういう論理?
0077デフォルトの名無しさん2007/04/01(日) 15:53:30
あのさ議論中すまないけど、
>>75は ↑の方で誰かが警告書いてくれた「精神性疾患」の人なんだ。
相手にせずスルーしとくのが、マナーだよ。
0078デフォルトの名無しさん2007/04/01(日) 16:00:52
親切な回答にいちいち逆切れしてスレを汚し出すようじゃ
誰にも相手にされないよな。
0079デフォルトの名無しさん2007/04/01(日) 16:01:30
>>77
ズバリ言われちゃったからって、ひどい逃げ口上だな。

実用性を求めたらダメになるって事は、ポテンシャル的に実用に耐えないって事だ。
実用に供され得ない物の研究は、工学においてはオナニーと呼ばれても仕方ないし、
幾ばくかでも国費を使っているなら、それは穀潰し行為という事だ。
0080デフォルトの名無しさん2007/04/01(日) 16:01:34

バカばっかだよな
 
0081デフォルトの名無しさん2007/04/01(日) 16:04:12
困った人が来ちゃったねw
0082デフォルトの名無しさん2007/04/01(日) 16:05:02
ここで暴れてるのは>>51って事で
スルー推奨
0083822007/04/01(日) 16:06:02
ここで暴れてる人は、>>51に書かれてる人って事で
スルー推奨
0084デフォルトの名無しさん2007/04/01(日) 16:09:27
この前 On Lisp の訳本が出版されたけど Haskell にもそう言う本が欲しいね
今のところ入門書が2冊出ているだけだしこのまましぼんでいっちゃうのは惜しい
昨今の高級スクリプトブームで Lisp や関数型言語が注目されはじめているけど
一過性のlブームで終わりそうでやだなぁ
0085デフォルトの名無しさん2007/04/01(日) 16:11:20
> 一過性のlブームで終わりそうでやだなぁ

それは無いって。
毎年毎年、教育や研究で使う学生さんが量産されてるから。
0086デフォルトの名無しさん2007/04/01(日) 16:12:33
Haskellniおいて一過性のブームというなら、すでに終わってるんじゃないか?
あんまりブログでも書かれなくなったし
0087デフォルトの名無しさん2007/04/01(日) 16:12:55
俺自身もごく初期に夏季集中講義かなんかでこの系統の言語を学んだし。
0088デフォルトの名無しさん2007/04/01(日) 16:15:11
>>84
おいおい、Lispみたいな下等言語と一緒にするなよ
shopingサイト作った程度のドカタがグル扱いされるような言語と、
ちゃんとした世界中の研究者が利用する研究素材は違って当然。
研究素材なんだから、ドカタに普及する意味自体がない。
0089デフォルトの名無しさん2007/04/01(日) 16:16:12
数学基礎論とか地味ぃ〜な感じの分野のセンセが
学生さんに自分の分野に目を向けさせて、
引っ張り込むためのツールとしては機能してた気がする。
教育研究用ツールってのは、それでえぇんでない?
0090デフォルトの名無しさん2007/04/01(日) 16:16:46
>>88はスルー推奨
0091デフォルトの名無しさん2007/04/01(日) 16:16:55
この本はどうよ?

Programming in Haskell
ttp://www.amazon.co.jp/Programming-Haskell-Graham-Hutton/dp/0521692695/
0092722007/04/01(日) 16:24:53
>>73
俺がストレスに感じることを「非実用性」と定義するなら、
Haskellは俺の知る中で最も実用的な言語だな。

>>74
お前の推測はどうでもいい。

そもそも俺個人の好みが問題なんじゃない。
「実用性を求めるならOcamlを使え」という議論が乱暴だと言っている。
0093デフォルトの名無しさん2007/04/01(日) 16:26:43
なんという非現実的な言葉遊びスレ
0094デフォルトの名無しさん2007/04/01(日) 16:27:24
RSS取得程度のプログラム作成に1ヶ月掛かる糞言語なんだろ?
Perlならものの数分だよ。2ちゃんねるやmixiを支えてる実用言語だけのことはある。
0095デフォルトの名無しさん2007/04/01(日) 16:33:18
>>92
あんたみたいな厨が、言語の価値を殺す。 Lispの轍を踏ませたいの?
0096デフォルトの名無しさん2007/04/01(日) 16:39:55
>>92-95 はスルー推奨
0097デフォルトの名無しさん2007/04/01(日) 16:45:16
“On Lisp”はLispのボトムアップによるスケーラビリティについて書いているけど、
Haskellにもそういった哲学ってあるの?
0098デフォルトの名無しさん2007/04/01(日) 16:46:07
>>96
おまえ、このスレに見覚えがあるだろ。
【面減る】ム板廃人列伝【最古】
http://pc5.2ch.net/test/read.cgi/tech/1083734838/
0099デフォルトの名無しさん2007/04/01(日) 17:01:47
404 Not Found
010070=72=922007/04/01(日) 17:06:22
>>95
批判なら具体的に頼む。
0101デフォルトの名無しさん2007/04/01(日) 17:06:26
新しい言語はちょっとかじってみたりするんだけど
大抵ライブラリが整備されていなくてあまり使わないんだよな。
.NET Frameworkがそれを解決してくれるかと思うんだけど
なかなか流行って行かないみたいだし。
というわけで結局無難な選択になってしまう。
■ このスレッドは過去ログ倉庫に格納されています