[過去ログ] 関数型プログラミング言語Haskell Part16 (978レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
877: 2011/12/25(日)23:46 AAS
インストール作業が非常に面倒だった記憶があるから、
インストールする前に訊きたいんだが、

以前 windows 上で wxHaskell を使ってた時は、
ghci では動かせず、動作を試すのにいちいちコンパイルしてたんだ

今(ghc 7.2.2、wx-0.12.1.6)でもそうなの?
878
(2): 2011/12/26(月)01:50 AAS
>>867じゃないけど>>876面白いな
モナドとモナド変換子を使ってプログラミング言語の意味を表現しておけば
そこからその言語のインタプリタを自動生成してくれるのか
879
(2): 2011/12/26(月)10:20 AAS
>> 878
>モナドとモナド変換子を使ってプログラミング言語の意味を表現しておけば
>そこからその言語のインタプリタを自動生成してくれる
そりゃできるに決まってるよ、と思うのだが、そう思うのってあまりにdetailに
鈍感ってことかなあ?
ところで、このときモナドが本質的(モナドだからできる)ってことでもない
と思うのだが、どうですか?
880: 2011/12/26(月)10:31 AAS
>>879
構文と意味を分離するのだから、モナドが相当本質的ではないの?
881: 2011/12/26(月)15:45 AAS
ようやくlearn you a haskell ~ を2周読み終えるわ。この本やっぱり
面白かった。純粋な関数型のデータ構造を扱うための入門にも向いてるよ。
特に最後の2つの章がね。
ただの入門かと思ったけど、そうでもなかった感じがした。

もちろん、ちょっと話題になってるモナド変換子のことは現実世界Haskell
になってくる。でも、Learn you a Haskell~を2,3度読むと基礎は十分
じゃないかと思った。

ええ本ですわ。
882
(1): 2011/12/26(月)15:51 AAS
他の本も同時に読んでるけど、Tree based tech-nick の言語でもあるし
なにもかも他とは異質という印象があった。LispやSmalltalk,Prologと
は違うまた異質な世界。

でも、オブジェクト指向でやったほうが良いようなシミュレーションの問題
などは向いてないなと思った。Haskellでもできないことはないというのは、
ライブラリを探して、サンプルを見てたら分かるんだけど、無理矢理感が
拭えないな。

簡単なところを学んだあとに改めてHaskellというのを考えたけど、学んで
有益だったのか明確な答えがでなかった。

ここのベテランさん達はHaskellを学んで、そして実用的?に利用して何が良
かったと感じてますか?
883: 2011/12/26(月)15:52 AAS
technique だったな。
884
(2): 2011/12/26(月)15:54 AAS
もうひとつ感じたことh,HaskellのタプルはLispのconsみたいなもんなんだな。ってね。consとtupleは違う点ももちろん明確なんだけど。
885
(1): 2011/12/26(月)20:04 AAS
>>882
・便利な機能(というより、無いと苦痛な機能)が揃ってる
 代数的データ型、型クラス、型推論、…
・構文が簡潔なので書いていて苦痛が少ない(括弧を閉じなくて良いのは大きい)
・静的な型

もっと地味に良いところはたくさん挙げれられる
 GC、生ポインタ操作、パーサコンビネータ、ユーザレベルスレッド、並列処理、
 do構文、where構文、純粋であること、末尾再帰の最適化、…
でも個人的な感覚としては、他の言語に比べて大きな欠点が少ないから使ってる
886
(2): 2011/12/26(月)20:04 AAS
>>884
問1. HaskellのタプルとLispのconsの共通点は何?
問2. その共通点は本質的なものか?
887
(1): 2011/12/26(月)21:40 AAS
>>878
2時間たらずでそこまで理解できたなら大したもんだ。
自動生成というか、各プログラミング言語の概念(環境、ストア、継続)をモジュール化することで、
レゴのブロックのように意味の組み合わせが可能になる言語の枠組みとして使えるという内容。
いろんな先入観を払拭するのに最適だし。
残念ながら入出力については実装があたえられていないので、言語SLは実践的にはまったく使い物にならない。
逆に言えば、入出力をちゃんと理解して組み込めるようにすれば、実用的にも結構すごいことだと思う。
888: 2011/12/26(月)23:00 AAS
表示的意味論の教科書でも大抵入出力は端折ってる。
889: 2011/12/26(月)23:25 AAS
>>885
そうですか。更に学べば面白いところありそうですね。:-)
>>886
自分が感じたのは、便利な小物扱いしてるところ。consを使ったもので
associate listというものがあるんだけど、その扱いと特に似てると感じた。
tupleは無名構造体という言い方をするとどこかで読んだことがあるけど、
もちろんtupleでリストを作るわけではないので違いは歩けd.
890: 878 2011/12/26(月)23:55 AAS
>>879
俺がモナドをよく知らないから新鮮に思えるだけかも

>>887
説明ありがとう
Haskellerがモナドモナドうるさい理由がちょっと解ってきたよ
891: 2011/12/27(火)00:02 AAS
うるさくはないよ。控え目だよ。
892: 2011/12/27(火)04:33 AAS
うるさくはないよ。針小棒大だよ。
893: 2011/12/27(火)09:38 AAS
うるさくないよ。短小早漏だよ。
894: 2011/12/27(火)12:44 AAS
>>886
>>884ではないけど、横レスしてみる

Lispのような動的型付け言語の場合、2つの要素から構成されるタプルと
リスト構成子である cons は同一であり、互いに置き換えることができる

Haskellのような静的型付け言語の場合、
タプルは直積構造であるから各要素のデータ型は互いに異なっていてもかまわないが、
リストにおいては各要素のデータ型は同一でなければならない
したがって、2要素のタプルとリスト構成子との間に互換性はない
895: 2011/12/27(火)13:38 AAS
無理矢理なぐらい広議にしたモノイドという観点に立てば関連性が無いとも言えない
896
(10): 2011/12/27(火)19:54 AAS
cabal で stm をインストールしようとしたら、

Control\Concurrent\STM.hs:0:4: lexical error (UTF-8 decoding error)

というエラーで止まってしまい、インストールできません

そもそも cabal の lexical error というのはどういう時に起こるのでしょうか

[環境]
GHC 7.2.2
cabal-install 0.10.2
Cabal library 1.10.2.0
897
(2): 896 2011/12/27(火)23:18 AAS
問題がだいぶ絞り込めました

{-# LANGUAGE CPP #-}

たったこれだけ書かれた Test.hs ファイルを ghci 上でロードすると、

Test.hs:0:4: lexical error (UTF-8 decoding error)
Failed, modules loaded: none.

と表示されエラーとなりますが、エラーの意味が分かりません

{-# LANGUAGE Arrows #-}

例えばこれだけ書かれた Test.hs ファイルなら、普通にロードできます

これ GHC 7.2.2 のバグでしょうか
それとも意図された振る舞いなのでしょうか

後者なら、このエラーはどのような意味なのでしょうか
898: 829 2011/12/28(水)03:00 AAS
>>829です。解決しました。
原因はIPv6周りだったらしく、Ubuntuの設定をしたら直りました。

自分の対処法としては。参考にしたサイトとは若干違い。

/etc/ufw/ufw.conf にIPV6の記述がなかったので
IPV6=yesに。

/etc/NetworkManager/system-connections/Auto eth0の[ipv6]のmethodがignoreになっていたのを、
method=autoにそれぞれ変更し直りました。

参考にしたサイト 
hackage.haskell.org に繋がるようになりました。 - sirocco の書いてもすぐに忘れるメモ
外部リンク:d.hatena.ne.jp
899: 829 2011/12/28(水)03:12 AAS
まずプロバイダに特定のサイトが繋がらないんだけど?と連絡したら中の人がぐぐってくれたらしく
ipv6の設定を変えてみてくれという返事が帰ってきました。なんか検索したらそういうものが見つかったとのこと。
ipv6の問題とか自分の身に降りかかってくるとは思ってなかったのでパニクリました。
向こう側がググったサイトは教えてくれない感じで、Windowsでの設定方法を教えますって言われたので、うは、逆にUbuntuでの設定方法を教えてくれwと思いながらWinじゃないので、と言ってとりあえず引き下がって自分で対処しようとすることに。
うわー、面倒くさそうと思って、プロバイダ側で何が引っかかったのだろうとぐぐってみたら1番上が思いっ切りUbuntuの人のページでしたw

ちなみにAndroidケータイがXperiaなんですが、それでもhackageのサイトに通じなかったので、ipv6の設定がどうかなってるんですかね。
Windowsでipv6とかgoogleのグローバル版で調べてみてもあまりipv6と関連した情報みたいなのは出てきませんが。
外人さんは困ったりしないんだろうか。全くよくわからないところです。日本人・日本語だと困ってる人が少し出てきましたね。

で、結局Ubuntuでipv6の設定しなおしたらなんで繋がるようになったのかは理解してません。w
どうしてなんでしょうか?

この方のところも参考にしました。
UbuntuでIPv6 - とある技術屋の戯言
外部リンク:www.sonorilo.net
900
(1): 2011/12/28(水)07:16 AAS
馬鹿には無理
901: 896 2011/12/28(水)07:35 AAS
>>900
賢い人でしたら >>897 の問題分かるでしょうか

ちなみに、ghci -XCPP というオプションで ghci を起動させれば、
たとえ何も書かれていない空白の hs ファイルをロードしても、
全く同じ lexical error になります
902
(2): 2011/12/28(水)07:47 AAS
適当に推測すると、cppの出力が非UTF-8の何かを含んでるんじゃないの?
cpp -traditional Test.hs
の出力を見てみるとか
903: 2011/12/28(水)07:49 AAS
まさにそれでした
ありがとうございます
904: 896 2011/12/28(水)07:54 AAS
>>902
ありがとうございます

色々な ghc のバージョンで試す環境が作れたので、
丁度今試していたのですが、どうも 6.12.3 なら OK で
7.0.0 以上なら NG みたいなんです

もう仕事に向うので、帰宅したら cpp -traditional Test.hs の方を試してみます
905
(2): 896 2011/12/28(水)19:09 AAS
>>902
cpp -traditional Test.hs の結果が以下のように出力されました

-------------------------------
# 1 "Test.hs"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "Test.hs"
{-# LANGUAGE CPP #-}

-------------------------------

何か問題あるでしょうか
906
(1): 2011/12/28(水)19:25 AAS
>>905
わからん。念のためghci -v Test.hsをやってみて、
そこで出てきたプリプロセスコマンドをそのまま打ち込んでみたら出力はどうなる?
カレントディレクトリかテンポラリディレクトリのパスに日本語が入ってるとか
1-
あと 72 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.016s