08/03/19 22:32:20
正直コードのぱっと見はSASL系のMirandaの方が好きだった。比Haskell
625:デフォルトの名無しさん
08/03/19 22:54:32
>>619
円高なんだから.comの書店から輸入すれば安いYO!
626:デフォルトの名無しさん
08/03/20 13:46:58
>>624
どの辺が違うの?
627:デフォルトの名無しさん
08/03/20 13:48:34
>>624
Mirandaスレ逝けYO!
628:619
08/03/20 13:57:36
っていうか、もう買っちゃったんだけどw
ついさっき届いたんだが・・・チョっw、Craftとかよりも紙が安っぽいwww
これ、11,554円か・・・。頑張って自分のモノにしないとなw
629:デフォルトの名無しさん
08/03/22 14:32:26
1966年にP.J.LandinがISWIMという言語を作ったのがその起源で、SASL, Mirandaという後継言語を経て、HaskellとCleanが生まれました。
これらは、全て「遅延評価」を評価戦略におくプログラミング言語であり、「純粋関数型言語」と呼ばれるグループです。
SASL系のMiranda???イミフ。
630:デフォルトの名無しさん
08/03/22 19:31:56
1954年にJ.BackusがFORTRANという言語を作ったのがその起源で, Algol, Cという後継言語を経て、C++とJavaが生まれました。
これらは、全て「副作用による状態の更新」を実行の基礎とするプログラミング言語であり、「手続き型言語」と呼ばれるグループです。
Algol系のC???イミフ。
631:デフォルトの名無しさん
08/03/22 19:39:51
wxHaskell 0.10.3 が出たみたい。
URLリンク(sourceforge.net)
632:デフォルトの名無しさん
08/03/22 23:22:00
遅延評価よりもしっくりくる言葉はないものだろうか
直訳で不精評価とか?
633:デフォルトの名無しさん
08/03/22 23:37:01
>>632
634:デフォルトの名無しさん
08/03/22 23:45:23
SASL系のMirandaって何?Haskellは何系なの?クワシク。
635:デフォルトの名無しさん
08/03/23 00:00:20
HaskellはMiranda系です
636:デフォルトの名無しさん
08/03/23 00:20:12
>>630 なにが意味不なのかわかんね
637:デフォルトの名無しさん
08/03/23 00:53:22
英語が難しくてよく理解できないのでつがw
638:デフォルトの名無しさん
08/03/23 10:58:06
>>629 なにが意味不なのかわかんね
639:デフォルトの名無しさん
08/03/23 11:43:24
Point-free styleで
\a b -> a*b + a/b
を書くにはどうすればいいですか?
一般に,同一の引数を複数回使うような関数はどう定義すればいいですか?
さらに例えば2引数a, bを取って,それらを複数回使い,
その場所が構文木の深さで並べたとき交互に入り混じるような関数はどう定義すればいいですか?
\a b -> a + exp(b + exp a)
みたいな.
* idとかを使って形式的に同じ深さにする(例えば snd(id b, id a) + exp(id b + exp a) とする)
* 2変数関数に同じ引数を与えるようなapplyをあらかじめ定義しておく
(そう言えばSコンビネータは S f g x => f x (g x) でxが2回出てくるなぁ...)
が鍵かなーと思ってますが,一般にはどうすればいいのか.
640:デフォルトの名無しさん
08/03/23 13:18:34
Control.MonadとControl.Monad.Instancesをインポートするとこの二つが使える
ap :: (a -> b -> c) -> (a -> b) -> a -> c
liftM2 (.) :: (a -> b -> c) -> (a -> d -> b) -> a -> d -> c
どっちも便利
641:デフォルトの名無しさん
08/03/23 13:51:22
s = \ x y z -> x z (y z)
k = \ x y -> x
i = \ x -> x
-- f = \ a b -> a * b + a / b
f = ((s ((s (k s)) ((s ((s (k s)) ((s (k k)) (k (+))))) ((s ((s (k s)) ((s ((s (k s)) ((s (k k)) (k (*))))) ((s (k k)) i)))) (k i))))) ((s ((s (k s)) ((s ((s (k s)) ((s (k k)) (k (/))))) ((s (k k)) i)))) (k i)))
642:デフォルトの名無しさん
08/03/23 14:37:06
返り値がユニットって他の言語で言うvoidの事ですか?
643:デフォルトの名無しさん
08/03/23 14:43:08
他の言語ってどの言語だよw
644:デフォルトの名無しさん
08/03/23 14:46:42
例えばcやJavaです
645:デフォルトの名無しさん
08/03/23 14:59:03
>>634
> SASL系のMirandaって何?
Turner大先生の作った言語がSASL→KRC→Miranda
URLリンク(en.wikipedia.org)
Mirandaは売り物じゃなければもっと普及したと思う。
646:デフォルトの名無しさん
08/03/23 19:45:21
>>642
全く違います。
Unitは値ですがvoidは値ではありません。
647:デフォルトの名無しさん
08/03/23 21:22:47
全く違いますか・・・
勉強しなおしますい
648:デフォルトの名無しさん
08/03/23 21:26:41
void 式は存在するし、C++ だと return 文にも渡せるが、
void 式を入れる変数が存在しない点が Unit とは大きく違う点か。
649:デフォルトの名無しさん
08/03/23 21:46:56
TAPLにはunitとCやJavaのvoidの使われ方は近いと書いてあるね。
650:デフォルトの名無しさん
08/03/23 21:57:00
使われ方は近いっていうのと概念が近いってのを混同せぬよう。
651:デフォルトの名無しさん
08/03/23 22:36:57
voidは引数として渡せないしな。
652:デフォルトの名無しさん
08/03/23 22:51:43
データ構造にも入れられない
653:639
08/03/24 00:09:11
>>640
Control.Monad.Instances って関係あるんですか?
つーか Control.Monad の ap や liftMn は (Monad m) => ... m a -> ... な感じでモナド専用なのでは?
>>641
トランスレータ乙w
Wikipediaに載ってる変換アルゴリズムには
> In general, the T[ ] construction may expand a lambda term of length n to a combinatorial term of length Θ(3n).
とありますが.
まぁSKIがあれば不可能な訳ではない,と...
R. Bird先生とかの論文で習うしかないのかなー
654:デフォルトの名無しさん
08/03/24 00:11:01
日本語でおk
655:デフォルトの名無しさん
08/03/24 00:19:18
instance Monad ((->) r) -- Defined in Control.Monad.Instances
656:デフォルトの名無しさん
08/03/24 01:13:02
lambdabotのplというプラグインが自動でポイントフリー変換をしてくれる
\a b -> a*b + a/b
を入れたら
ap (ap . ((+) .) . (*)) (/)
が返ってきた
\a b -> a + f (b + g a)
だと、
ap ((.) . (+)) ((f .) . (+) . g)
657:初心者修業中
08/03/24 04:17:08
あの、結局、ポイントフリーは
「クイズとしては面白いけど無理に使う必要はない」
という事ですよね?
658:デフォルトの名無しさん
08/03/24 07:52:47
当然だ
使うに値すると思ったときだけ使えばいい
659:デフォルトの名無しさん
08/03/25 04:01:38
Birdの一派は「ポイントフリーの方がプログラムの本質が一層明らかになる」とか主張するんだよね
660:デフォルトの名無しさん
08/03/25 04:21:26
彼らの変形萌えぶりをみれば、
それほど無茶を言ってないと思えるよ。
プログラム変換(人力)で成果挙げてるからね。
661:デフォルトの名無しさん
08/03/26 00:32:30
Haskell のテストコード書いたり、簡単な実行したりコードさらしたりするにはここへカモン。
URLリンク(codepad.org)
コードを書いて実行した時のURLを記録しておけば、
実行結果も一緒にさらす事が出来て幸せです。
662:デフォルトの名無しさん
08/03/26 04:41:11
なんであんたあちこちで宣伝してんの?
663:デフォルトの名無しさん
08/04/01 12:06:11
GHCのドキュメントをMakeするときに必要な
stringparamっていうプログラムって何でしょうか?これが無いせいでhtmlドキュメントが生成できません
xmlproc関係のものだと言う気はするんですが、検索しても見付かりません
入手方法など情報お願いします
664:デフォルトの名無しさん
08/04/01 12:20:15
stringparamはプログラムじゃなくてxsltprocのコマンドラインオプションじゃないか?
665:デフォルトの名無しさん
08/04/01 21:14:03
なるほど、どもです
どうやら原因はMakeの中で上手くxsltproc関連の変数が設定されてないのが原因でした
666:デフォルトの名無しさん
08/04/05 01:33:37
以下のコードでtimeout関数の動作確認をしたのですが、
うまく動作しません。何がいけないのでしょうか?
import System.Timeout
main = do a <- timeout (3*10^6) getLine
print a
667:デフォルトの名無しさん
08/04/05 02:07:19
>>666
俺の環境(Linux x86 ghc-6.8.2 base-3.0.1.0)だと動いたよ
windowsだとHandleからの入力でブロックするときにselectを使ってないから、そのせいかも
668:デフォルトの名無しさん
08/04/05 19:56:39
モナドとかって解りやすく
書いた論文とかありますか?
PARSEC使いたいのですが
どうにも曖昧で
669:デフォルトの名無しさん
08/04/05 20:15:35
>>668
I Love Ruby本
670:デフォルトの名無しさん
08/04/05 20:50:09
>>668
つ "The marriage of effects and monads"
つ "Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell"
ググればPDF手に入る
671:デフォルトの名無しさん
08/04/05 20:56:19
parsec使うのにモナドの知識は必要ないけどな
>>670
Tackling...はIOモナドについての論文じゃないか?
672:デフォルトの名無しさん
08/04/05 21:02:17
だったら何?
673:デフォルトの名無しさん
08/04/05 21:06:05
モナドについて知りたがってる奴にIOモナドの事を教えてもしょうがないだろ
群について知りたがってる奴に整数を教えるようなものだ
674:デフォルトの名無しさん
08/04/05 21:08:14
>>673
あとkindとかって数学の眠い本永遠と
読まないと理解できないかな?
圏とかまじで数学本気でやってねーから解らん
675:デフォルトの名無しさん
08/04/05 21:18:11
kindは全然難しいものじゃない
「Maybe Int」型の式は存在するけど単なる「Maybe」型の式は存在しないとか、
「Maybe Maybe」っていう型は不正だとか、そういう次元の話
676:デフォルトの名無しさん
08/04/05 21:21:18
パージングするとIOモナとの連携は付き物だから、
>>668は知りたくなるんじゃないかな?
知らなくてもPARSEC使えるけどね。
677:デフォルトの名無しさん
08/04/05 21:28:50
知らなくても使えるんだけど
背景とか基礎的な内容知りたく
ならない?
ならない、そうですかそうですか.....
678:デフォルトの名無しさん
08/04/05 21:41:01
Trends in functional
Programmingって毎年出てるの?
679:デフォルトの名無しさん
08/04/06 01:49:14
>>668
"Monadic parser combinators"ってテクニカルレポートが
仕組みやモナドの解説が分かりやすく書いてあってよかった。
680:デフォルトの名無しさん
08/04/06 09:06:14
自分は手続き型のメジャー言語を普段使っている人間ですが、最近関数型が話題になって
勉強しているところです。
この板の書き込みもそうですし、実際に出版されている本の数や内容など見ると、まだ
Haskellのような言語は研究者レベルの言語なんでしょうか。
個人的には今後アプリがマルチプロセスに対応せざるを得ないとか、複雑性が上がる
中で処理の信頼度を一層高める必要がある中で、Haskellのような言語がある時期から
一気にパラダイムシフトを引き起こすのじゃないか、とか妄想していますが、単なる
妄想ですかねw
681:デフォルトの名無しさん
08/04/06 09:25:48
Haskellは、ある時期と言わず今、実用プログラムを(分野にも依るけど)書く上で有力な言語だと思うよ
その意味で、Haskellは既に研究レベルの言語ではない
一方で、今のHaskell利用者に占める研究者や学生の割合はそれなりに高いだろうし、
Haskellが研究の道具として使われてるのも事実だから、その意味で研究者の言語だ
682:デフォルトの名無しさん
08/04/06 09:59:31
>>680
遅延評価のHaskellから、
> ある時期から一気にパラダイムシフトを引き起こすのじゃないか
ってのはちょっと難しいだろうね。
> 研究者レベルの言語
こういう考え方はよくわからない。
自分の腕を上げるために必要なことは学べばいいだけなんで。
683:デフォルトの名無しさん
08/04/06 10:01:57
immutableにするとスレッドセーフになるのは分かる
代入ができなくても別に困らない、というのも分かる
分からないのは遅延評価
原則的にはeagerにして必要なときだけ明示的に遅延するのでは駄目な例ってないすか
684:デフォルトの名無しさん
08/04/06 10:10:05
>>682
> 遅延評価のHaskellから、
> > ある時期から一気にパラダイムシフトを引き起こすのじゃないか
> ってのはちょっと難しいだろうね。
これはどういう意味でしょうか?
685:デフォルトの名無しさん
08/04/06 10:12:07
>>683
駄目ってことはないんじゃないか?
Haskellは、原則的には遅延で必要なときだけ明示的にeagerという立場だから、
Haskellコードを、デフォルトがeagerな言語に翻訳するのは機械的な書き換えで済む
どっちをデフォルトにするのが便利かは議論の分かれるところじゃないだろうか
686:デフォルトの名無しさん
08/04/06 10:16:32
>>683
「つまらない」そこが駄目
687:680
08/04/06 10:24:01
>>683
SICPなんかだと、参照透過性と遅延評価をStreamの項で関連付けて
いたりしますが、その辺へのこだわりではないんでしょうか?
688:デフォルトの名無しさん
08/04/06 10:33:23
1988年?ぐらいの関数言語を実装するための
本があるはずだけど
あれみれば遅延評価背景わかるはず
本の名前が解らん
689:デフォルトの名無しさん
08/04/06 11:17:06
>>688
URLリンク(research.microsoft.com)
これ?
lazy evaluationの正当化は194ページにちょっとあるだけかな
690:デフォルトの名無しさん
08/04/06 11:23:03
>>689
おーそれそれ
あとどれだったかなぁ
691:デフォルトの名無しさん
08/04/06 19:27:55
日本だとどっちを先に読めって言われてるの?
・Introduction to Functional Programming Using Haskell
URLリンク(www.amazon.co.jp)
・Haskell: The Craft of Functional Programming
URLリンク(www.amazon.co.jp)
692:デフォルトの名無しさん
08/04/06 20:25:11
>>691
自分はCraftを先に読みました。Craftは所謂Haskell言語の入門書だと思います。
Introduction~はHaskellの入門というよりも、関数型言語の原理原則を中心に
展開する書物ですね。自分は今読んでる途中です。
どちらもよい本だと思います。
693:デフォルトの名無しさん
08/04/06 20:25:18
>>691
欧米だとどっちを先に読めって言われてるの?
694:デフォルトの名無しさん
08/04/06 20:28:17
片方が初級で片方が中級、とかではないですね。
695:デフォルトの名無しさん
08/04/06 20:46:40
>>693
俺の恩師のイギリス人のじいちゃん先生
だと、今の若い人間には退屈すると
長続きがしないだろう。好奇心だけでは
どうしても無理だろう。といって、Craftを
読んで言語を理解しなさいと言われたなぁ
696:デフォルトの名無しさん
08/04/08 00:14:53
このすれの住人って
俺以外に、5人しかいないだろ?
697:デフォルトの名無しさん
08/04/08 03:08:19
日本でHaskellやってる人間なんて100人未満だろうな
698:デフォルトの名無しさん
08/04/08 03:13:05
だってモナドって何ですかって聞くと
「圏論について勉強するといいよ」って返されるんだもん
そしてwikipediaで圏論の説明見てわからず涙目になる俺
699:デフォルトの名無しさん
08/04/08 04:11:20
>>697
3000人じゃなかった?
700:デフォルトの名無しさん
08/04/08 06:33:59
Haskellでモナドを使ったり作ったりする分には圏論の知識なんて要らないけどな
701:デフォルトの名無しさん
08/04/08 10:04:01
>>699
そのうち何人が実際にソフトウェアを記述するかといったら100人未満だと思うよ
702:デフォルトの名無しさん
08/04/09 00:19:34
Webの自動テスト
Haskellで書くと面白いんだけど
Arrowが良くわからん
あれが必要ななんでどうまくつかいこなせない
703:デフォルトの名無しさん
08/04/09 06:49:34
?
704:デフォルトの名無しさん
08/04/09 08:26:47
和訳すると、
「よくわからないArrowが必要なせいで、うまく使いこなせない。」
705:デフォルトの名無しさん
08/04/09 18:22:44
arrowより日本語を使いこなした方がよいのでは…
706:デフォルトの名無しさん
08/04/09 18:38:51
まぁ、arrowよりも日本語の方が長く使うだろうからなぁ。
707:デフォルトの名無しさん
08/04/09 18:42:17
分からないぞ、突如GHCが日本を占拠して日本語の代わりにHaskellを使うように命じられるかもしれない。
708:デフォルトの名無しさん
08/04/09 18:48:55
それは中国が世界を支配する確率とどちらが高いかね?
709:デフォルトの名無しさん
08/04/09 20:42:39
GHC とは General Headquarters Compiler の略だったのか・・・
ギブ・ミー・モナド
710:デフォルトの名無しさん
08/04/10 11:30:08
>>702
Arrowが必要なのは、Arrowベースのテストツールかなにかを
使ってるからなんだろうけど、なに使ってるの?
711:デフォルトの名無しさん
08/04/10 21:50:55
>>710
作ってるのw
712:デフォルトの名無しさん
08/04/11 11:39:16
しかし雑談ばっかりだなこのスレ
713:デフォルトの名無しさん
08/04/11 11:56:43
うまく使いこなせないのに必要だと分かって作ってるんですか
714:デフォルトの名無しさん
08/04/11 23:23:30
モナドってHaskellに限った考え方ではなくて、もっと一般的な考え方なんだよね?
ほかの言語にモナドの考え方を応用したようなライブラリが、もっとあってもいいと
思うんだけどな。副作用嫌いな人は喜ぶと思うんだけど。そうでもないのかね。
715:デフォルトの名無しさん
08/04/11 23:36:10
すでに他の言語でもあることない?
すんごいマイナーだけど
716:デフォルトの名無しさん
08/04/12 01:17:35
Python でモナドを実装してみたよ、ってのはネットで見た気がする。
717:デフォルトの名無しさん
08/04/12 01:19:07
これだ。
URLリンク(www.valuedlessons.com)
718:デフォルトの名無しさん
08/04/12 02:47:54
つ URLリンク(okmij.org)
つ URLリンク(okmij.org)
719:デフォルトの名無しさん
08/04/12 21:48:14
引く手あまたのプログラミング言語は?
URLリンク(slashdot.jp)
---
Java(16479件)、C++(8080件)、C#(7780件)、JavaScript(6749件)、
Perl(5710件)、PHP(2641件)、Python(1408件)、COBOL(1207件)、
Ruby(769件)、Lisp(33件)といった感じらしい。
とりあえずJavaとC/C++/C#、あとJavaScriptを覚えれば、
当分仕事には困らないようである。COBOLのしぶとさも目立つ。
ちなみにHaskellやOCamlの求人は10以下だったそうだ。
---
720:デフォルトの名無しさん
08/04/12 23:28:51
JavaはともかくC#はどうかな…?
10年後には残ってない気もするが。
721:デフォルトの名無しさん
08/04/13 00:54:40
そんなことよりもHaskellの求人が存在するのか!!
どんな仕事だ?
722:デフォルトの名無しさん
08/04/13 02:47:10
リンク先まともに読んでないが
単に列記されてるのカウントしてるだけじゃねーの?
723:デフォルトの名無しさん
08/04/13 03:03:37
HaskellとかOcamlの仕事とかどんなんか見てみたい
研究用じゃないよな
724:デフォルトの名無しさん
08/04/13 03:05:42
Haskellでグラディウスを作る仕事です。
誰でも簡単にできる楽しい作業です。
初心者歓迎。
725:デフォルトの名無しさん
08/04/13 08:25:34
0 <= 10 → True
726:デフォルトの名無しさん
08/04/13 08:30:48
0は10以下でないとか、全部は一部でないとか、空列は列でないとか、自然言語には奇怪な慣習があるのです
727:デフォルトの名無しさん
08/04/13 09:21:12
Hugs> -10 <= 10
True
728:デフォルトの名無しさん
08/04/13 10:27:42
Haskellerお断り 10件w
729:デフォルトの名無しさん
08/04/13 11:00:54
アメリカの大学では、(企業もだけど)
フルタイムやパートタイムの非常勤プログラマーを雇うことがあるから、
Haskellはその類いかも知れない。
730:デフォルトの名無しさん
08/04/13 11:10:29
>>723
www.janestcapital.com
731:デフォルトの名無しさん
08/04/13 13:02:12
だけど、関数型言語の勉強は仕事で使わなくてもやったほうが
いいと思うけどな。手続き型で出やすい不具合をどう防ぐか、
無駄の無い記述をどう実現するか、とか勉強になること多いと思うよ。
732:デフォルトの名無しさん
08/04/13 13:08:30
個人的には手続き型ベースのOOPLのコーディングに影響があったかというと微妙な気が。
具体的にどういうこと?
733:デフォルトの名無しさん
08/04/13 13:11:08
一々メソッドや変数の名前を考えるのが面倒で
コーディングする気力が萎えて来るとか…
734:デフォルトの名無しさん
08/04/13 13:18:35
海軍でhaskell使ってると思う
どこの国かは言えんが
topでGHCかりかり動いているみたことある
735:デフォルトの名無しさん
08/04/13 13:25:20
lambdaの導入とかそういう文法レベルでの影響は0ではないか。
736:デフォルトの名無しさん
08/04/13 13:30:55
C++は次でラムダ実装する
Intelのスレッドライブラリもラムダ標準実装
C#も次期バージョンのサポート予定
Javaはかすだけどサポートするらしい(いらねw
737:デフォルトの名無しさん
08/04/13 13:56:04
あるとか無いとか、仕様のマトリックスを埋めるだけなら意味無いよ
C++ 自体がイラネ
738:デフォルトの名無しさん
08/04/13 14:04:04
>>732
いや、単純に(再)代入が許されない世界で、再起を使うとか、リストデータを
編集してそこから必要な情報抜くとか。そういうの訓練すると影響あるんじゃない
かなぁ。
手続き型だと「要するにこれはどういう処理か」って考えずにずらずらと手続きを
書き連ねていって、目的のデータを何とか作ってしまう、とかなりがちだけど、
その辺が意識変わると思うんだけどね。
739:デフォルトの名無しさん
08/04/13 14:12:31
副作用を0にするって考えは
通常の手続き型に慣れると
そうぞうすらしない奴も多いから
F言語はシンプルな世界観を持つ
ためにはある程度知る必要があると
おもふ
別に変態的に知る必要はまったくないけど
それよりCraf本読むのに6時間かけてまだ
6章しか読めん俺はおわっとる
740:デフォルトの名無しさん
08/04/13 17:52:54
>>736
VBで既に導入されてなかった? >λ式
741:デフォルトの名無しさん
08/04/13 17:53:27
C#にも既に入ってる
742:デフォルトの名無しさん
08/04/13 20:29:34
C#とかにλ式が導入されるとか、ちょっと意味不明というか、統一感が無さ過ぎる感じが
するがどうなんだろうか。だったらF#とかでいいじゃないか?って気がするけどな。
実はF#への移行の布石だったりして。
743:デフォルトの名無しさん
08/04/13 20:58:22
元々あった無名delegateの構文を整理しただけだから、そんなに大袈裟な話でもない
どっちにしろ、まともな高水準言語なら無名関数の類はあって当然で、統一感とか気にしてる場合じゃない
次は代数的データ型とパターンマッチに相当するものが入るといいな
744:デフォルトの名無しさん
08/04/13 23:12:29
>>743 >まともな高水準言語なら無名関数の類はあって当然で、
私が言葉尻に拘ってるのかも知れないが、なぜ?
745:デフォルトの名無しさん
08/04/13 23:22:47
>>744
上であがってる古い関数言語の実装の
論文読んでみなよ何が要素として定義
されていて必要なのかわかるから
746:デフォルトの名無しさん
08/04/13 23:27:35
>>745
でもC++とかには(少なくとも現在の規格では)無いわけだし、
実際無名関数みたいな仕組みは無くてもプログラムを組むことはできるし、
それらの事実を踏まえた上で>>744は>>743が「あって当然で」と言っているその考えを聞きたいんだと思うんだが。
あった方がプログラミングが綺麗になる部分もあるのは当然の話だが。
747:デフォルトの名無しさん
08/04/13 23:29:40
それこそ言葉尻じゃねw
モダンな言語は取り入れる傾向にあるとでも読み換えたら。
748:デフォルトの名無しさん
08/04/13 23:47:26
>>746
OOが無くても手続きはできるし
アジャイルがなくてもそれ相当のことはいくらでもできる。
Cで、どんな手段でもOKならfor_each構文を作ることもできる
結局、ラテン語やその他の自然言語がどんどん変革していったように
プログラミング言語も変わっていくだけだと思うよ
ただそこには、今まで苦労した結果を簡単に置き換えることで
本当の問題にどれだけ注視して取り組めるようすることを
追求しているだけだと思うよ。リスクの低減と開発効率の上昇
自然言語に対する機械言語の仕様変更とイディオムの変更は
とてつもなく早いのでそれに対する拒否反応や疑問は常時出てしまうけど
それは仕方のないことだろうし。まぁ慣れてくれ
749:デフォルトの名無しさん
08/04/14 00:34:46
>>746
> でもC++とかには(少なくとも現在の規格では)無いわけだし、
今もあるぞ、制限が多いだけで。
C++0xで言語自身に組み込みになってより強力になる。
750:デフォルトの名無しさん
08/04/14 01:01:34
C++ にクロージャ入れても意味が無い
751:デフォルトの名無しさん
08/04/14 02:45:24
わざわざ関数オブジェクトクラスを定義しなくて良いという
くだらないが重要な利点があります
752:デフォルトの名無しさん
08/04/14 08:38:21
そして文法が果てしなく汚れて行く…
753:デフォルトの名無しさん
08/04/14 08:52:25
Haskell には今話題にあがってるような、構文、言語機能の拡張ってないの?
754:デフォルトの名無しさん
08/04/14 17:18:28
提案されてきた拡張は数えきれないくらいある
いくつかはGHCにも実装されてるし
755:デフォルトの名無しさん
08/04/14 20:34:05
C#にクロージャとかって、どうも奇妙な感じがするのは、関数型言語って
自然数なんかもλ式で表現する、つまり「全ては関数なり」という一貫
した思想に基づいて設計されてるわけでしょ?
C#やJavaなどのオブジェクト思考言語って、値が全てなんだよね。
値を操作するために関数がある。そこにクロージャとかって、何か
意味があるのかね。
756:デフォルトの名無しさん
08/04/14 20:41:20
オブジェクト指向言語を知らないからそう思うんじゃないの。
オブジェクト指向言語で関数オブジェクトを扱えるのは別に
おかしな事じゃない。関数型言語でオブジェクト指向する事も
出来るし。
757:デフォルトの名無しさん
08/04/14 20:47:01
>関数型言語って
>自然数なんかもλ式で表現する、つまり「全ては関数なり」という一貫
>した思想に基づいて設計されてるわけでしょ?
これがそもそも勘違い
例えばHaskellのIntは関数じゃない
C#やらJavaScriptやらにクロージャがあって役に立つのは事実
例を知りたければ適当に検索すればいくらでも見つかると思う
758:デフォルトの名無しさん
08/04/14 21:04:05
副作用がある言語のクロージャってのも、
それはそれで使いでがある。
SICPをやってみればわかるけども。
759:デフォルトの名無しさん
08/04/14 21:24:38
>>756
それってUtility的なものでしょ?
どうも変な感じするけどなぁ。
760:デフォルトの名無しさん
08/04/14 21:36:49
そりゃ、あんたがどう感じるかで言語設計している訳じゃないからな。
オブジェクト指向が値が全てと言うのは勘違いだし、クロージャも
みんな昔から便利に使っている。それだけ。
761:デフォルトの名無しさん
08/04/14 21:50:02
なんだこのNOOBどもは
小学生の議論してんなよ
762:デフォルトの名無しさん
08/04/14 21:51:03
あ、そうw
いや、俺が感じるというか、計算モデルがそもそも違うと思うんだけどね。
まぁ、いいかw
763:デフォルトの名無しさん
08/04/14 21:53:29
なんかさ、大学でちょっとかじったぐらいのやつらの話ってうざくね?
いかにも知ったかぶった感じで話すやつら。
764:デフォルトの名無しさん
08/04/14 21:54:57
ネトゲ厨降臨中
765:デフォルトの名無しさん
08/04/14 21:55:00
>>762
アクター理論とかはどうなの?
766:デフォルトの名無しさん
08/04/14 21:57:48
OO 特有の計算モデルとかあるの?
767:デフォルトの名無しさん
08/04/14 22:15:57
昨日教科書読みました、みたいな発言やめてください。
背中がむずがゆくなります。
768:デフォルトの名無しさん
08/04/14 22:19:30
偶然ですね。私も昨日SICP読みました。さっぱりわかりませんでしたがw
769:デフォルトの名無しさん
08/04/14 22:21:28
学のない奴が語っちゃいけませんかそうですか
770:デフォルトの名無しさん
08/04/14 22:22:47
学の無い人間は尋ねる側ので、語る側ではないな。
771:デフォルトの名無しさん
08/04/14 22:23:40
じゃあ頭の出来が違う人達に語ってもらおうぜ
772:デフォルトの名無しさん
08/04/14 22:28:21
命令すんなよw
773:デフォルトの名無しさん
08/04/14 22:30:06
それなら気が向いたらでいいから宜しく頼むわ
774:デフォルトの名無しさん
08/04/14 22:30:13
>>762は学のあるなし以前に、自分の意見をまじめに伝えようとしてないから、相手にしないほうがいい
775:デフォルトの名無しさん
08/04/14 22:37:10
Haskellの拡張については 昨日教科書読みました 程度では語れるレベルじゃないから、
Haskellでの実装の話しろよ。
776:デフォルトの名無しさん
08/04/14 23:05:51
BrainfuckでHaskell作ろうぜ
777:デフォルトの名無しさん
08/04/17 07:30:06
Haskell初心者ですが、勉強した印象として構文が若干
多いかな?という感じがします。型に関係する部分とか
特に。
これってHaskellerの間で議論があったりするんでしょうか。
比べてはいけないんでしょうけど、Schemeのようなシンプルさ
で同じような型チェックができたら最高なんですが。
778:デフォルトの名無しさん
08/04/17 08:25:11
それはCとC++比べてるようなもんです。どうしても嫌なら、
ML系のオブジェクト指向が入ってないのをやってみてはどうでしょうか。
779:デフォルトの名無しさん
08/04/17 10:31:09
OCaml?
780:デフォルトの名無しさん
08/04/17 18:26:40
>>779
たぶんCaml liteの方。でなきゃSML。
781:デフォルトの名無しさん
08/04/17 21:15:56
>>777
ぐちぐちうぜーこと言ってるなら
使うな辞めろうぜーんだよ
お前のチラ裏報告なんて誰も
求めてねぇよ
さっさと消えろよ
782:デフォルトの名無しさん
08/04/17 21:39:09
>>777
厳格な型付けをする言語では避けて通れないんじゃないの。むしろ、それを望む人には
必要不可欠かと。
783:デフォルトの名無しさん
08/04/17 22:47:46
空気読まずに失礼しますが、
runhaskellの引数にプログラムを書いて実行する方法はありますか?
たとえばrubyだと
$ ruby -e "print 'abc'"
のように書くことが出来ますよね。
同じような使い方をHaskellでしたいんです。
784:デフォルトの名無しさん
08/04/18 05:22:47
ghc -e 'putStrLn "abc"'
Hugsだと多分無理
785:デフォルトの名無しさん
08/04/19 20:56:38
>>781
かわいいw
786:デフォルトの名無しさん
08/04/19 23:48:13
Types and Programming Languages
と
Introduction to Functional Programming Using Haskell
カバーしてる内容全然違う?
787:デフォルトの名無しさん
08/04/20 00:32:17
はい、上は型理論の入門書です。
数学分からない人は絶対に読むべきじゃないです。
788:デフォルトの名無しさん
08/04/20 00:36:37
>>787
ここ数年の少年ジャンプの面白さを
発見するよりは簡単なはずだが?
789:デフォルトの名無しさん
08/04/20 00:44:07
>>788
「型推論のHindley-Milner type inference」とかでピンと来るならいいんじゃね。
790:デフォルトの名無しさん
08/04/20 00:46:08
数学界ってネタ切れなんかね
791:デフォルトの名無しさん
08/04/20 05:25:06
TAPLに数学なんか関係あったか? どのへん?
792:デフォルトの名無しさん
08/04/20 07:19:16
数学は万物と関係があります
793:デフォルトの名無しさん
08/04/20 08:26:36
確かにそうだが随分とアバウトな答え方だね
794:デフォルトの名無しさん
08/04/22 09:45:15
本の最初のLessonで
main = do cs <- getContents
putStr cs
というサンプルがあったのだが,このまま打ち込んでも
The last statement in a 'do' construct must be an expression
と出る.どうすれば...?
795:デフォルトの名無しさん
08/04/22 12:09:38
>>794
二行目の先頭にちょうど10個のスペースを入れてる?
796:デフォルトの名無しさん
08/04/22 15:58:12
>>794
URLリンク(www.ice.nuie.nagoya-u.ac.jp)
797:デフォルトの名無しさん
08/04/22 20:41:46
>>795-796
Emacsを使ってるのですが,するとEmacsの自動インデント
機能に難ありということなのでしょうか...
798:デフォルトの名無しさん
08/04/22 22:51:23
>>797
Emacsはよく知らんが、Tabをスペースにかえればいいんでないの?
799:デフォルトの名無しさん
08/04/22 22:55:19
関数型プログラミング言語Haskell Part7
スレリンク(tech板)
213 :デフォルトの名無しさん:2007/04/07(土) 18:00:15
すいません。emacsのhaskell-modeでプログラムしているんですが、
インデントの方法に関して質問があります。
例えば、次の様なソースがあった時、
import System
import System.IO
main = do
putStrLn $ "Woud you like some coffee?(y/n)."
hFlush stdout
c <- getChar
if c == 'y'
then putStrLn "Yes,please."
else putStrLn "No,thank you."
thenやelseの前でTabキーを押すと、if式と同じインデントになってしまうのですが、
それだとコンパイルエラーになってしまいます。なので、今はスペースでインデントを
付けています。Tabキーで正しくインデントさせる方法がありますでしょうか?
800:デフォルトの名無しさん
08/04/22 22:56:16
関数型プログラミング言語Haskell Part7
スレリンク(tech板)
215 :デフォルトの名無しさん:2007/04/07(土) 19:31:19
>213
明示的に {} を使うという方法はあるにはあるが。
do { putStrLn $ "Woud you like some coffee?(y/n)."
; hFlush stdout
; c <- getChar
; if c == 'y'
then putStrLn "Yes,please."
else putStrLn "No,thank you."
}
のようにすると綺麗にインデントできる。
まぁ私は手で空白を入れたり一行にしちゃったりする方が多いけれど。
216 :デフォルトの名無しさん:2007/04/08(日) 17:57:02
>>215
レスありがとうございます。
{}を使う方法か、手動でインデントをあわせる方法の2通りという事ですね。
他の方はどうやってインデントさせているのか疑問に思っていたのですが、
その疑問が解消されました。
801:デフォルトの名無しさん
08/04/24 02:56:48
Tabをもう一回押すんだよ。
802:デフォルトの名無しさん
08/04/24 03:05:24
URLリンク(www.fobj.com)