[過去ログ] 関数型プログラミング言語Haskell Part16 (978レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
945(2): デフォルトの名無しさん [sage] 2012/01/02(月) 08:54:08.83 AAS
>>943943(1): デフォルトの名無しさん [] 2012/01/02(月) 08:20:03.67 AAS
だけど関数型と副作用の問題って本当に解けるものなのか?
解けるときはどういう形で解けるんだ?
モナドはどこまでそれを解いたんだ?
ListとIOとMaybeは大体同じだということがモナドによって示された
つまりListが問題ないなら副作用も問題ないしnullポインタも問題ないと思われる
946: デフォルトの名無しさん [sage] 2012/01/02(月) 09:33:13.90 AAS
同じだということを否定する連中は自分の能力を過信する
947: デフォルトの名無しさん [sage] 2012/01/02(月) 10:49:17.93 AAS
>>939939(1): デフォルトの名無しさん [sage] 2012/01/02(月) 02:01:59.64 AAS
FFI 関連について質問です
C言語で構造体と、それを引数として受ける関数などを作りました(*.h、*.c)
*.hsc ファイル内でそのヘッダファイルを include し、
C言語で定義したのと同じ構造のデータ型を定義しました
そして、Storable 型のインスタンス宣言の中で、
#size や #alignment マクロを使って
Storable.sizeOf や Storable.alignment を定義しました
(#alignment マクロは下記のサイトのものをそのまま使いました
外部リンク:stackoverflow.com
ghc 7.2.2 ですけど、まだ組み込みマクロではないようですね)
そのあと、ghc2hs コマンドで *.hsc から *.hs を生成し、
また *.c をコンパイルして *.o を生成し、
それらを一緒に ghc でビルドしようと思います
(まぁ実際は、*.c のまま ghc に一緒に放り込んでも良いわけですが)
そこで質問なのですが、この場合、
*.c は ghc 付属の gcc、あるいは別に用意した同Var.の gcc でコンパイルしないと、
構造体のメモリマップが ghc2hs の解釈と(理論上は)合わないと思うのですが、
この認識は間違ってないでしょうか
正確に言えば、ghc の -pgmc オプションで指定したC言語コンパイラ、
hsc2hs の --cc オプションで指定したC言語コンパイラ、
そして *.c をコンパイルしたC言語コンパイラ、
この3つのコンパイラが同じ物でないと危険なのではないでしょうか
(たまたま、VC++ のコンパイラなどとその辺りの仕様が同じ場合もあるでしょうが)
構造体のレイアウトは、コンパイラが違えば異なる可能性があるし
同じコンパイラでも、コンパイルオプションによっても変わる可能性がある
構造体のサイズやレイアウトに依存したコードは、比較的大きな危険をおかしている、と思っている
実際に問題が起ることは少ないと思うけど
948(3): デフォルトの名無しさん [sage] 2012/01/02(月) 11:36:03.29 AAS
関数型マトモに勉強してたら和田先生をdisるなんて考えられん。
どう考えてもモグリだわw
949: デフォルトの名無しさん [sage] 2012/01/02(月) 11:37:17.46 AAS
>>945
それ、MonadどころかLISPのS式の時点で示されてるじゃんw
950(1): デフォルトの名無しさん [sage] 2012/01/02(月) 11:54:20.89 AAS
>>948
京都の先生にSICPの訳をdisられた疑惑が浮上して以来2chでの権威はストップ安です
951(1): デフォルトの名無しさん [sage] 2012/01/02(月) 12:19:02.82 AAS
>>950
disられたってどういうこと?
952(1): デフォルトの名無しさん [sage] 2012/01/02(月) 12:26:28.49 AAS
モナドは中身はともかく、どう書けるかって話だと確かに関数型捨ててるでしょ。
特にdoを使って書いてると手続き型とほとんど変わらんし、似たようなスパゲティ化もしやすいし。
953(1): デフォルトの名無しさん [sage] 2012/01/02(月) 12:30:08.48 AAS
>>948
和田(笑)
954(1): デフォルトの名無しさん [sage] 2012/01/02(月) 12:54:56.37 AAS
>>951
外部リンク:togetter.com
ここにまとめられてる湯浅先生の発言を、
キチガイが拡大解釈して必死に広めてるだけ。
キチガイ死ねよ。
955: デフォルトの名無しさん [sage] 2012/01/02(月) 13:02:10.78 AAS
>>948
こういう人は具体的に何故モグリなのか全然説明してくれないから説得力が全くない
権威主義の人って大体そんな感じ
956(1): デフォルトの名無しさん [sage] 2012/01/02(月) 13:29:14.03 AAS
>>954
なんで自分で噂に根拠与えちゃってるの?
そのままほっとけば単なる噂ですんだのに。
957: デフォルトの名無しさん [sage] 2012/01/02(月) 13:43:07.49 AAS
クロージャーとかジェネレーターの辺りで完結するべきだった。
最近の関数型はだらだら引き伸ばしているだけ。
958: デフォルトの名無しさん [sage] 2012/01/02(月) 13:44:07.71 AAS
>>956
根拠のない噂を広める罪がわからないゴミカスのようなキチガイは死ねよ。
959(2): デフォルトの名無しさん [sage] 2012/01/02(月) 14:06:34.63 AAS
>>952
つまり、プログラマが式をどう考えるかや、コンパイラが式をどう扱うかではなく、
式をどう書くかによって関数型かそうでないかを判断しているのか、お前は
じゃあ、お前の言う関数型を捨てた書き方である
do {x <- getLine; putStr $ "> " ++ x}
これを
getLine >>= putStr . ("> " ++)
こう書いたら、関数型に戻るのか?
あともう一つ、本当にdo表記で似たようなスパゲティ化が起きやすいのか?
お前はdo表記で頻繁にスパゲティ化してしまっているのか?
スパゲティ化という事は、実行順序、Haskellなら計算順序が複雑に絡まるんだよな
それはdo表記だから絡まるのか? むしろdo表記の方が絡みにくくないか?
960(1): デフォルトの名無しさん [sage] 2012/01/02(月) 14:14:42.26 AAS
>>959
前者に関しては、俺の感覚ではイエス。
後者に関しては俺の書き方が悪かった。
手続き的なコードが縦にダラダラ長くなるとぐちゃぐちゃに見えてキモいってだけなんだ。
961: デフォルトの名無しさん [sage] 2012/01/02(月) 14:27:45.34 AAS
好き嫌いだけで一歩も進んでないのな
962(2): デフォルトの名無しさん [] 2012/01/02(月) 14:33:23.75 AAS
>>945
どんなもの達をもってきても、それらが「大体同じである」と見る視点はいくら
でも作れるわけだが、ListとIOとMaybeは大体同じだというモナドの視点はそんな
ナンセンスな視点ではないのだね?
963(1): デフォルトの名無しさん [sage] 2012/01/02(月) 15:05:16.12 AAS
>>962
> そんなナンセンスな視点ではないのだね?
「そんな」がどんなのを指しているのか曖昧だな
もっとはっきりと言ってくれ
大体同じであるという視点はどのような集合に対しても適用できるけど、
「どう同じなのかが論理的に説明できる」ことと、
その視点が応用する上で「役に立つ」こと、
この2点が無いとせっかくの発見も後の時代まで残らない
モナドはとりあえず今のところ残ってる
964(1): デフォルトの名無しさん [sage] 2012/01/02(月) 15:12:39.30 AAS
>>960
お前の手続き的なコードが縦に「ダラダラ長くなる」原因は何だ?
それはdo表記のせいなのか?
お前はもしかして、自分のコードがdo表記で縦にダラダラ長くなったら、
その原因がdo表記にあると考えて、getLine >>= putStr . ("> " ++)
みたいな表記に直すのか?
それとも、キモいって言うだけで、後が続かず終わってるのか?
もし本当にそうなら、関数型や手続き型うんぬんの前に、
プログラムそのもの構造を学んだ方が良いぞ(SICP なんか読みやすくてお勧め)
965(1): デフォルトの名無しさん [] 2012/01/02(月) 15:26:49.59 AAS
>964
縦に長くならなくても、
do {x <- getLine; putStr $ "> " ++ x}
のxも、関数型からすれば嫌だろ。
966: デフォルトの名無しさん [sage] 2012/01/02(月) 15:37:53.22 AAS
>>965
では構文的な構造が似ている
let x = 3 in f x
これも「関数型からすれば嫌」なのか?
967(1): デフォルトの名無しさん [] 2012/01/02(月) 15:53:19.26 AAS
>>963
最初からモナドと言わずにリストと言えば通じやすかったと思うが。
968(1): デフォルトの名無しさん [sage] 2012/01/02(月) 16:15:00.92 AAS
>>967
すまん、言わんとしていることがよく分からん
俺の発言の何に対する意見なんだ?
通じやすかったというのは世間にか? それともここ一連の会話の誰かにか?
前者なら最初から委員会の連中はリストはリストと言っている(モナドは後付け)
後者なら誰だよそんな事言ったの
俺は >>962 の
ListとIOとMaybeは大体同じだというモナドの視点はナンセンスかどうか、に対して、
モナドはどう同じなのかが論理的に説明できており、かつ役に立つ視点である、
だからナンセンスではない、という自分の考えを謂わば逆説的に述べただけだよ
969: デフォルトの名無しさん [sage] 2012/01/02(月) 16:34:00.46 AAS
>>953
それはスーフリの方。
>>959
do表記は手続きっぽくなるから、スパゲティーメイカーになりやすいかも。
スパゲティーにするならせめてカルボナーラかミートソースにしてくれよ。
上下前次1-新書関写板覧索設栞歴
あと 9 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.021s