関数型プログラミング ..
[2ch|▼Menu]
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)


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5223日前に更新/201 KB
担当:undef