13/10/25 21:54:29.92
関数型プログラミング言語 Haskellについて語るスレです。
前スレ: 関数型プログラミング言語Haskell Part23
スレリンク(tech板)
haskell.org
URLリンク(www.haskell.org)
日本語サイト
URLリンク(www.sampou.org)
URLリンク(www.shido.info)
過去ログ (10~)
Part21 スレリンク(tech板)
Part20 スレリンク(tech板)
Part19 スレリンク(tech板)
Part18 スレリンク(tech板)
Part17 スレリンク(tech板)
Part16 スレリンク(tech板)
Part15 スレリンク(tech板)
Part14 スレリンク(tech板)
Part13 スレリンク(tech板)
Part12 スレリンク(tech板)
Part11 スレリンク(tech板)
Part10 スレリンク(tech板)
2:デフォルトの名無しさん
13/10/25 21:55:57.09
ノ ゚.ノヽ , /} ...
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは>>1乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. :::
3:デフォルトの名無しさん
13/10/25 21:57:45.35
過去ログ (20~)
Part23 スレリンク(tech板)
Part22 スレリンク(tech板)
Part21 スレリンク(tech板)
Part20 スレリンク(tech板)
4:デフォルトの名無しさん
13/10/26 03:58:23.29
C++の限界
URLリンク(www.digitaltrends.com)
C#の限界
URLリンク(www.stfuandplay.com)
Haskellの限界
URLリンク(www.haskell.org)
5:デフォルトの名無しさん
13/10/26 19:26:01.37
最高
6:デフォルトの名無しさん
13/10/26 21:50:44.57
Haskellのコスパのいい勉強順序とは?
7:デフォルトの名無しさん
13/10/26 21:56:56.30
C++←自転車
C#←空中戦艦
Haskell←ソルジャー
C++が最弱!ありえん!なんで自転車!
8:デフォルトの名無しさん
13/10/26 22:32:02.64
>>6
他の言語と同じだよ。
1. まず Hello World 含むトイプログラムを何十個と書いては実行し、
主な文法や機能を身に付ける。
2. 次にそれらのプログラムの実行がなぜ意図した結果になるのか、
中でどのような処理が行われているのか、その意味を理解する。
ただし、Haskell の場合は C や Java などと違ってここが難解なので、
具体的にコンパイラがどのようなコードを吐くかまでは理解しなくてもよい。
もっと抽象的に、プログラムを順に弱頭部正規形に簡約して評価していく様子が
頭に思い浮かべることができれば十分。
3. 何か小さなアプリをいくつか作り上げてみる(完成させるのがポイント)。
linux の echo コマンドや cat コマンドの簡易版でも良い。
完成したら、いくつか機能を付け加えてみる。
4. いくつか作ってみるうちに、ボイラープレートを何とかしたいなとか、
もっと簡単に機能を加える方法はないものかとか、
なんかプログラムが汚くてかっこ悪いなとか、いろいろ思うところが出てくる。
そうしたら、他人のコードを見たり、BBSで質問したり、
問題を解決してくれそうなライブラリを探したりすればいい。
実際はこんな綺麗にステップアップ式に学べるものではなく、
おそらく 2 3 4 を行ったり来たりすることになるが、
概ねこのような順で学ぶといいのではないか。
コストを時間と捉えるなら、私はこの順を勧める。
9:デフォルトの名無しさん
13/10/26 22:53:59.43
プログラマは頭なんてよくないよ
一種のサバン症候群だから日本語は苦手
10:デフォルトの名無しさん
13/10/26 23:07:12.23
>>8
これはありがたい
11:デフォルトの名無しさん
13/10/27 01:47:21.69
ネット上で日本語の質の良い入門サイト教えてほしい
12:デフォルトの名無しさん
13/10/27 03:31:14.01
gentle introductionの日本語訳
13:デフォルトの名無しさん
13/10/27 05:04:16.17
サンプル見ながらでしか書けない人っているよね
14:デフォルトの名無しさん
13/10/27 05:05:09.54
文字列を出力して改行する = putStrLn
こんにちは、世界 = 文字列を出力して改行する "こんにちは、世界"
15:デフォルトの名無しさん
13/10/27 07:28:10.87
SL4A で動きますか?
16:デフォルトの名無しさん
13/10/27 08:23:51.44
>>14
へー(、)という演算子が定義できるのか
17:デフォルトの名無しさん
13/10/27 08:39:05.13
冗談抜きでプログラムさくさく書けるひと尊敬するわ
コミュ障が多いけど
18:デフォルトの名無しさん
13/10/27 11:21:51.69
今時プログラムをさくさく書けないって古い地球人過ぎないか
19:デフォルトの名無しさん
13/10/27 11:55:53.91
マルチポストに反応する新しい地球人
20:デフォルトの名無しさん
13/10/27 12:02:52.38
>>13
関数マニュアル見ただけでかけるほどマニュアルはちゃんとかけてないし、
そもそも関数自体がそんな風にできてない
とすればどういう使い方を想定して関数があるのかをサンプル見て知るしかない
21:デフォルトの名無しさん
13/10/27 13:11:39.80
>>12
これのこと?
URLリンク(www.sampou.org)
結構古いけどhaskell98って今のhaskellと違う部分とか無いのかな
22:デフォルトの名無しさん
13/10/27 13:49:51.27
そんなに変わってない。基本的に高度な機能は言語拡張(処理系依存)でカバーするから
URLリンク(www.haskell.org)
23:デフォルトの名無しさん
13/10/27 15:22:18.34
じゃあ大丈夫か
でもやっぱりそのサイトの日本語分かりづらかったから本買おうかな
Lispから本格的にHaskellに入信しようか迷う
24:デフォルトの名無しさん
13/10/28 02:49:05.04
Haswell の GUI は何がメジャーですか
25:デフォルトの名無しさん
13/10/28 10:14:58.65
gtk+とwxHaskellかな
qtもあるけど長いこと更新されてないと思う
26:デフォルトの名無しさん
13/10/28 14:33:22.79
節子それHaswellちゃう
27:デフォルトの名無しさん
13/10/29 02:23:58.08
通はHaskell+GLUT
28:デフォルトの名無しさん
13/10/29 07:39:36.24
URLリンク(www.haskell.org)
Xサーバでも、Xqartz、Xmingで動けばいちおうクロスプラットフォームになるのか。
29:デフォルトの名無しさん
13/10/29 07:54:11.48
よくかんがえてみたらJavaの実行環境もそんなもんだったな
インストーラ作ってハードル下げればクロスプラットフォームになるんじゃ
30:デフォルトの名無しさん
13/10/29 10:16:35.03
>>27
いや、Haskell+GLFWだね
31:デフォルトの名無しさん
13/10/29 15:02:10.03
Win32APIで勉強してる
32:デフォルトの名無しさん
13/10/29 15:25:23.97
結局よくあるプログラムには向いてないんだよね?
そういうのも綺麗にシャレオツに書ける言語ないかな。
33:宇宙人
13/10/29 16:44:31.44
>>32
地球には今のところ無いが、地球の科学技術レベルはまんざらでもなく10年後くらいにはあるかも。
34:デフォルトの名無しさん
13/10/29 17:47:43.20
お、おう
35:デフォルトの名無しさん
13/10/29 17:51:23.93
プログラムを作ることに向かないプログラミング言語Haskell
36:デフォルトの名無しさん
13/10/29 21:06:32.89
でも論文採択率は良さそう...
37:デフォルトの名無しさん
13/10/30 00:49:38.58
WindowsやAndroidでも普通に動けばな
38:デフォルトの名無しさん
13/10/30 00:50:18.81
F#でいいんじゃねぇの
39:デフォルトの名無しさん
13/10/30 01:29:12.39
逆に関数型で生まれた概念が他の言語に入れば満足だ
純粋関数だけでどうせプログラム組めないし
40:デフォルトの名無しさん
13/10/30 02:00:26.33
>>39
一番成功している関数型言語がC言語というオチ
41:デフォルトの名無しさん
13/10/30 06:50:46.69
Cが関数型言語ってどういうこと
プリプロセッサで頑張る話?
42:デフォルトの名無しさん
13/10/30 07:08:58.55
手続き型言語が体に馴染んでいるならそれ使ってればいいじゃん?って思うんだけど
Haskellが第一言語の俺達とは相容れない運命なのさ…
43:デフォルトの名無しさん
13/10/30 09:04:47.62
pascalが手続き型でcが関数型だと勘違いしてた時期が俺にもありましたw
44:デフォルトの名無しさん
13/10/30 09:36:55.63
>>41
別にプリプロセッサだけで頑張る必要ないだろ。
純粋性を保つようにコードを書けばいいんじゃね?
45:デフォルトの名無しさん
13/10/30 12:31:19.74
>>44
あいや、Cで関数型と聞いて思い当たったのがプリプロセッサを純粋関数型言語として使うという話しかなかったので
Cの #define を駆使するとプリプロセッサだけで案外ちゃんと計算ができるんだけど、代入が表現できないので純粋関数型言語の作法で書かざるを得ないというネタ(思い出してみたらネタだったけど煽る意図ではなかった)
46:デフォルトの名無しさん
13/10/30 12:31:45.13
>>44
保証がない
47:デフォルトの名無しさん
13/10/30 12:39:29.52
昔から一応functionalヘッダ持ってたり最近ラムダ式とか仕様に入れだしたC++を挙げるならまだしもなぜわざわざCを
48:デフォルトの名無しさん
13/10/30 12:40:37.22
Haskell の解説を見ると呪文のようにループは再帰があればって書いてあるけど
本当はループ欲しいんじゃないの?
49:デフォルトの名無しさん
13/10/30 13:20:22.69
>>46
unsafePerformIOだって保証ないじゃん
50:デフォルトの名無しさん
13/10/30 19:04:39.77
>>49
無理に穴を見つけようとしないで、もっと気楽に素直になれ
51:デフォルトの名無しさん
13/10/30 19:29:28.28
>>48
心の底から要らない。あっても使わない
52:デフォルトの名無しさん
13/10/30 19:50:42.76
>>48
ループはいらんかもね。
俺は再帰よりもmapとかを多用するようになった。
53:デフォルトの名無しさん
13/10/30 20:12:40.70
caseいらないとかも同じで
最初から完璧な最終的なコード書けるならいいけど
実験的なコード書いてるときはどうしてもゆるい書き方が欲しくなるのだよ
54:デフォルトの名無しさん
13/10/30 20:24:55.77
xml-conduit モジュールの Text.XML.Cursor.content や attribute などは
戻り値として text モジュールの Data.Text.Internal.Text 型のリストを返します。
このリストの要素に対して text モジュールの Data.Text.unpack 関数を適用すると
String 型の値が返ってきます。
しかし、なぜ Data.Text.Internal.Text 型の値に
Data.Text.unpack 関数が使えるのでしょうか。
Data.Text.unpack :: Text -> String の第1引数の型は
Data.Text.Text であって、Data.Text.Internal.Text ではないにも関わらず、です。
55:デフォルトの名無しさん
13/10/30 20:30:34.85
>>54
コンパイラーさんがいいと言ってるんだから、細けぇことはいいんだよ!
56:デフォルトの名無しさん
13/10/30 23:20:41.33
再帰はスタックを馬鹿食いするから多用すべきではない
57:54
13/10/30 23:50:04.37
>>55
真面目にお願いします
58:デフォルトの名無しさん
13/10/30 23:53:13.23
>>54
名前空間が違うだけで、型は同じ。
59:デフォルトの名無しさん
13/10/30 23:54:53.51
>>56
List->Listなら、再起でもスタック消費しない。
それ以外は基本、末尾再帰。
60:デフォルトの名無しさん
13/10/31 00:08:02.05
>>57
URLリンク(hackage.haskell.org)
61:デフォルトの名無しさん
13/10/31 17:03:37.76
Egisonの話題ってここで良いの?
62:デフォルトの名無しさん
13/10/31 19:51:29.64
ダメだろ
63:デフォルトの名無しさん
13/10/31 20:11:50.44
どこですればいい?
64:デフォルトの名無しさん
13/10/31 20:37:46.69
>>63
こちらで
スレリンク(tech板)
65:デフォルトの名無しさん
13/10/31 20:42:14.31
おっ サンキュー
66:54
13/11/01 07:51:27.23
>>58
>>60
「名前空間が違うだけで、型は同じ」 そういうことなんですね。
でも、どうしてわざわざ Internal の方の名前空間を使うのでしょうか。
"Internal" というモジュールは他のライブラリでもありますが、
基本的にはより低レベルの内部的な処理のためのものだと思います。
ライブラリを利用する側の者が使うのはあまり好ましいことではないような気がしますが、
Data.Text.Internal の説明には
Modules which extend the Text system may need to use this module.
とあるように、むしろ Data.Text ではなくこちらを使うよう促していますよね。
なぜなんでしょうか?
67:デフォルトの名無しさん
13/11/01 09:24:55.23
>>66
それ以上は言語とは関係ないライブラリ固有の話題だからドキュメント調べろよ
68:デフォルトの名無しさん
13/11/01 09:47:45.58
>>66
>Modules which extend the Text system
ってライブラリを拡張する場合だから、ただの利用者じゃないでしょ。
69:デフォルトの名無しさん
13/11/01 10:16:27.59
>>68
その上、その後ろに、こう書いてあるしな。
You should not use this module unless you are determined to monkey
with the internals, as the functions here do just about nothing to preserve
data invariants. You have been warned!
そもそも、>>54の前提がおかしい。
>xml-conduit モジュールの Text.XML.Cursor.content や attribute などは
>戻り値として text モジュールの Data.Text.Internal.Text 型のリストを返します。
ソースを見るとこうなってる。
URLリンク(hackage.haskell.org)
import qualified Data.Text as T
content :: Cursor -> [T.Text]