339 返信:153[sage] 投稿日:2012/08/16(木) 22:16:29.83
>>314
>関数型言語でなければならないという観点は間違ってる気がする
ああ、これについては同感だね
現状のどの関数型言語も文字列、パターン、ハッシュの操作に難があるから、
現行LLであるPerl/Python/Rubyを置き換えるには無理があると思う
ただし、関数型言語にも良い特性がある訳で、実際に(LLを含む)多くの言語に影響を与えている
だから自分は「LLにおける関数型プログラミング」に注目している
LLにおける関数型プログラミング
■ このスレッドは過去ログ倉庫に格納されています
2012/08/16(木) 22:17:50.32
2012/08/20(月) 22:21:02.41
MLなんてマイナー言語けなされて無視出来ずに反応しちゃうのは
LLスレで暴れてたRuby&関数型マニアのキモイ奴だけだろ
LLスレで暴れてたRuby&関数型マニアのキモイ奴だけだろ
75デフォルトの名無しさん
2012/08/20(月) 22:31:20.32 といふことは、MLをけなしているのはLLスレでプライドをズタズタにされたPythonマニア?
2012/08/20(月) 22:42:51.57
LLスレでぼろくそに批判されて、ついにこんな糞スレに追放されておいて
プライドがズタズタになっていない>>28は本当に凄い
プライドがズタズタになっていない>>28は本当に凄い
77デフォルトの名無しさん
2012/08/20(月) 22:52:41.32 図星だったようだね
2012/08/20(月) 22:57:09.67
MLをゴミだと思う人間がみんなPythonユーザだったら
Pythonはシェア1位を取ってるよ
Pythonはシェア1位を取ってるよ
2012/08/21(火) 00:36:30.01
根本的に可読性が低くなるから、普通の開発で推奨してる環境なんてないし
関数型プログラミングがやりやすい言語を選ぶなんてこともない
C++でもラムダが使える時代だから関数型プログラミング最高!という短絡思考はやめた方がいい
むしろ、Ruby以外は常識的判断により関数型からは慎重に距離を置いてる
結果としてRubyだけが関数型言語と同様の馬鹿げた真似をしてドヤ顔してるって感じ
本当にLisper得意の見下しって時代から何も進歩してない
まあML&Rubyの人は好きにやれば良いんじゃないかな
関数型プログラミングがやりやすい言語を選ぶなんてこともない
C++でもラムダが使える時代だから関数型プログラミング最高!という短絡思考はやめた方がいい
むしろ、Ruby以外は常識的判断により関数型からは慎重に距離を置いてる
結果としてRubyだけが関数型言語と同様の馬鹿げた真似をしてドヤ顔してるって感じ
本当にLisper得意の見下しって時代から何も進歩してない
まあML&Rubyの人は好きにやれば良いんじゃないかな
2012/08/21(火) 02:24:04.28
>結果としてRubyだけが関数型言語と同様の馬鹿げた真似をしてドヤ顔してるって感じ
例えばどういうRubyコードのこと言ってる?
例えばどういうRubyコードのこと言ってる?
2012/08/22(水) 16:21:19.35
ML を dis ってる人は、ML の派生も含めてダメだと言ってるの?
2012/08/22(水) 19:00:02.22
OCaml使ってると、Haskellと比較して、基本設計が古くさいなぁ、と思うことはある
83デフォルトの名無しさん
2012/08/23(木) 00:23:13.53 ハスケルで組まれたプログラムがスパゲッティすぎてついていけない
2012/08/23(木) 02:10:44.07
基本Mutableな言語はゴミとまでは言わないが、ゴミだぞ。
2012/08/23(木) 15:55:51.98
こういう破壊的操作使いまくりのコードが
Rubyにおける関数型プログラミングなの?
def func n , aa , bb
Enumerator.new do | e |
a = aa.cycle
b = bb.cycle
[*[b]*n.-(1),a].cycle { |r|
e << r.next
}
end
end
Rubyにおける関数型プログラミングなの?
def func n , aa , bb
Enumerator.new do | e |
a = aa.cycle
b = bb.cycle
[*[b]*n.-(1),a].cycle { |r|
e << r.next
}
end
end
86uy
2012/08/24(金) 05:46:30.28 質問ですチャーチ数の使い道を教えてください
これって
数値ではないわけで
チャーチ数のみでゲームをつくっても人間には何がおもしろいのかわからないものができあがりますよね
だからチャーチ数をどこかで人間がみて理解できる数値に変換していいんだとおもいますけど
それって途中までチャーチ数で演算した意味は?ってきかれるとまだ僕には答えられません
つまり最終成果物は十進数の数値なんですが
途中演算をλ計算でやる利点はなんですか?
なにがあるんですか?
これって
数値ではないわけで
チャーチ数のみでゲームをつくっても人間には何がおもしろいのかわからないものができあがりますよね
だからチャーチ数をどこかで人間がみて理解できる数値に変換していいんだとおもいますけど
それって途中までチャーチ数で演算した意味は?ってきかれるとまだ僕には答えられません
つまり最終成果物は十進数の数値なんですが
途中演算をλ計算でやる利点はなんですか?
なにがあるんですか?
87uy
2012/08/24(金) 05:49:22.00 あれ、もしかして桁が膨大になった場合ってラムダ計算のほうが高速ですか?
なんかそんな気がします
用途があるとすればそこでしょうか
なんかそんな気がします
用途があるとすればそこでしょうか
88uy
2012/08/24(金) 06:08:11.75 はやくおしえて
これ凄いですね
演算速度がどれだけ桁増えても一定である気がします
それであってますか?
これ凄いですね
演算速度がどれだけ桁増えても一定である気がします
それであってますか?
89uy
2012/08/24(金) 06:10:55.61 ねえ
レスまだ?
おそくない?
ラムダ計算はこんなに高速だってのにおまえ等は、、
cpu内部にラムダ計算入れるべき
レスまだ?
おそくない?
ラムダ計算はこんなに高速だってのにおまえ等は、、
cpu内部にラムダ計算入れるべき
90uY
2012/08/24(金) 14:04:23.57 もういいです
自分で理解した
ラムダ計算は最速の演算方法だ
自分で理解した
ラムダ計算は最速の演算方法だ
2012/08/24(金) 14:19:30.26
言葉先行のどこにでもいるだたのチンピラ?
2012/08/25(土) 03:04:49.02
は?
2012/08/28(火) 10:35:52.33
Rubyの設計が失敗してるということ。
2012/08/28(火) 10:49:11.57
どこが失敗している?>ruby
95uy
2012/08/28(火) 16:39:35.13 何カ所か盛大にミスってる
nilの扱いと名前空間
けどjavaにくらべたら全然余裕
nilの扱いと名前空間
けどjavaにくらべたら全然余裕
96デフォルトの名無しさん
2012/09/01(土) 14:32:43.71 【関連サイト: JavaScript編】 -- Pyhton編: >>4, Ruby編: >>55
・JavaScript 第6版 - O'Reilly Japan
http://www.oreilly.co.jp/books/9784873115733/
-- 第5版からの改訂として、節「8.8 関数型プログラミング」が追加された
・Javascriptで学ぶ Functional Programming
http://www.slideshare.net/todorokit/javascript-functional-programming-10170360
・JavaScriptで始める関数型プログラミング 1-1 - サイバーエージェント公式クリエイターズブログ
http://ameblo.jp/ca-1pixel/entry-11144877522.html
・エレガントな JavaScript を作成するための関数型プログラミングの使用 - IBM dw
http://www.ibm.com/developerworks/jp/web/library/wa-javascript.html
・A Modern Introduction to Programming with JavaScript and jQuery - Open Book Project
http://www.openbookproject.net/books/mi2pwjs/index.html
・JavaScript as a Functional Language
http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=557
・JavaScript 第6版 - O'Reilly Japan
http://www.oreilly.co.jp/books/9784873115733/
-- 第5版からの改訂として、節「8.8 関数型プログラミング」が追加された
・Javascriptで学ぶ Functional Programming
http://www.slideshare.net/todorokit/javascript-functional-programming-10170360
・JavaScriptで始める関数型プログラミング 1-1 - サイバーエージェント公式クリエイターズブログ
http://ameblo.jp/ca-1pixel/entry-11144877522.html
・エレガントな JavaScript を作成するための関数型プログラミングの使用 - IBM dw
http://www.ibm.com/developerworks/jp/web/library/wa-javascript.html
・A Modern Introduction to Programming with JavaScript and jQuery - Open Book Project
http://www.openbookproject.net/books/mi2pwjs/index.html
・JavaScript as a Functional Language
http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=557
97デフォルトの名無しさん
2012/09/02(日) 15:39:25.83 死ねwwwwwwwwwwwwwwwwwwカスwwwwwwwwwwww
9828
2012/09/05(水) 00:28:47.76 >>55にある記事の一つを勝手に翻訳してみた
Rubyによる関数型プログラミング -- Functional programming with Ruby
・http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html
・http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.epub
>>80
>>79のいう「関数型言語と同様の馬鹿げた真似をしてドヤ顔してる」とは、
たとえばこんな記事(および、記事に含まれるコード群)を指しているのだと思われ.....
Rubyによる関数型プログラミング -- Functional programming with Ruby
・http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html
・http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.epub
>>80
>>79のいう「関数型言語と同様の馬鹿げた真似をしてドヤ顔してる」とは、
たとえばこんな記事(および、記事に含まれるコード群)を指しているのだと思われ.....
2012/12/10(月) 16:00:53.19
もうrubyの話とか要らん
100デフォルトの名無しさん
2013/05/04(土) 12:59:24.13 add = lambda x, y : x + y
curry = lambda x : lambda y : x + y
curry (1)(2)
add = lambda x, y, z : x + y + z
curry1 = lambda x, y : lambda z : x + y + z
curry2 = lambda x : lambda y : lambda z : x + y + z
curry = lambda x : lambda y : x + y
curry (1)(2)
add = lambda x, y, z : x + y + z
curry1 = lambda x, y : lambda z : x + y + z
curry2 = lambda x : lambda y : lambda z : x + y + z
10128
2013/06/23(日) 07:15:39.33 スレが停滞してるので、新たなネタを投入してみる
そのネタとは「LLによる関数型プログラミングの実践」であり、
ここまでの関数型プログラミングに関する「理屈」を一歩進めてその「実践」に着手してみた
まず、最近までRuby初心者スレPart52では「ブログアンテナのデータ管理」を題材にして
手続き型プログラミングスタイルでRubyコードを設計してきた(詳しくは初心者スレの#43等を参照)
http://www.h6.dion.ne.jp/~machan/tmdoc/example/Blog.book/blog.png -- UMLクラス図
http://www.h6.dion.ne.jp/~machan/tmdoc/example/Blog.book/html-r1.30/ -- 自動生成ドキュメント
http://play.island.ac/codepaste/code?id=1536
このコード、>>54で書いた「末尾感嘆符ルール」に従い破壊的操作を伴うメソッドの末尾には
必ず ! (感嘆符)を付けるようにしていたけど、これを関数型プログラミングスタイルで書き直してみた
http://www.h6.dion.ne.jp/~machan/tmdoc/example/Blog.book/blog-fp.png -- UMLクラス図
http://www.h6.dion.ne.jp/~machan/tmdoc/example/Blog.book/html-r1.33-fp/ -- 自動生成ドキュメント
http://play.island.ac/codepaste/code?id=1537
見れば分かるように、両者間には全体的なモジュール構造/クラス階層の設計に変更は無く、メソッド定義だけが異なる
また、>>59で書いた(垂直方向にシステムを分割する)「階層化アーキテクチャ」に従い、
下位層のPStoreデータベースをアクセスするクラス Store では破壊的操作メソッド update_blog! を定義した一方で、
その上位層では破壊的操作を一切用いない「純粋関数型パラダイム」で設計している
ただし純粋関数型と言いつつも一部では破壊的代入を(しかたなく)用いているけど、
操作対象をローカル変数に限定しているので、矛盾や問題には該当しないと思う
なお、>>62末尾で書いた施策の一つ「専用の動的型検査メソッド呼び出し」について、
実際に自作のアサーションライブラリ 'assertion.rb' を利用してコードを書いている(例: ASSERT.kind_of ....)
そのネタとは「LLによる関数型プログラミングの実践」であり、
ここまでの関数型プログラミングに関する「理屈」を一歩進めてその「実践」に着手してみた
まず、最近までRuby初心者スレPart52では「ブログアンテナのデータ管理」を題材にして
手続き型プログラミングスタイルでRubyコードを設計してきた(詳しくは初心者スレの#43等を参照)
http://www.h6.dion.ne.jp/~machan/tmdoc/example/Blog.book/blog.png -- UMLクラス図
http://www.h6.dion.ne.jp/~machan/tmdoc/example/Blog.book/html-r1.30/ -- 自動生成ドキュメント
http://play.island.ac/codepaste/code?id=1536
このコード、>>54で書いた「末尾感嘆符ルール」に従い破壊的操作を伴うメソッドの末尾には
必ず ! (感嘆符)を付けるようにしていたけど、これを関数型プログラミングスタイルで書き直してみた
http://www.h6.dion.ne.jp/~machan/tmdoc/example/Blog.book/blog-fp.png -- UMLクラス図
http://www.h6.dion.ne.jp/~machan/tmdoc/example/Blog.book/html-r1.33-fp/ -- 自動生成ドキュメント
http://play.island.ac/codepaste/code?id=1537
見れば分かるように、両者間には全体的なモジュール構造/クラス階層の設計に変更は無く、メソッド定義だけが異なる
また、>>59で書いた(垂直方向にシステムを分割する)「階層化アーキテクチャ」に従い、
下位層のPStoreデータベースをアクセスするクラス Store では破壊的操作メソッド update_blog! を定義した一方で、
その上位層では破壊的操作を一切用いない「純粋関数型パラダイム」で設計している
ただし純粋関数型と言いつつも一部では破壊的代入を(しかたなく)用いているけど、
操作対象をローカル変数に限定しているので、矛盾や問題には該当しないと思う
なお、>>62末尾で書いた施策の一つ「専用の動的型検査メソッド呼び出し」について、
実際に自作のアサーションライブラリ 'assertion.rb' を利用してコードを書いている(例: ASSERT.kind_of ....)
102デフォルトの名無しさん
2013/06/23(日) 08:23:29.20 2ちゃんはもうすっかり人居なくなったな
103デフォルトの名無しさん
2013/06/23(日) 09:13:04.69 >>102
みんなどこに行ったん?
みんなどこに行ったん?
104デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN 大規模規制で半減したつうし、前プロバイダで規制やればあっさり消滅すんでねぇの?w
105デフォルトの名無しさん
2013/09/24(火) 02:46:24.05 rubyでcurry化は簡単便利
f=->x,y{2*x + 3*y}.curry
g=f[3]
puts g[4] #=>18
f=->x,y{2*x + 3*y}.curry
g=f[3]
puts g[4] #=>18
106デフォルトの名無しさん
2013/09/24(火) 09:11:08.81 そのくらいデフォでやれよ
その程度で簡単便利とか超わらえるわ
その程度で簡単便利とか超わらえるわ
107デフォルトの名無しさん
2013/10/28(月) 19:56:35.40 それで自己参照できるん?
108デフォルトの名無しさん
2014/01/16(木) 13:47:04.51 ゴミ
109デフォルトの名無しさん
2014/01/20(月) 01:07:25.2811028
2014/12/09(火) 23:38:42.78ID:7jn1Y2FE Swift スレで関数型プログラミングについてレスしたけど、
こちらのスレとも関連するのでメモとしてカキコしとく
http://peace.2ch.net/test/read.cgi/tech/1415860741/153
--
Swift や Ruby を含む多くの言語では常識であるけど Python では異なるものとして、
関数型言語に由来した(無名関数やラムダ式とも呼ばれる)クロージャがある
たとえば "The Swift Programming Language" の "Closure" の章にある map メソッドを使った
サンプルコードは、Ruby でも同じスタイルの良く似たコードで書き直せる:
http://ideone.com/TsGD6B
これは Ruby だけでなく、JavaScript でも同じ
Swift や Ruby と比べて構文が簡潔な JavaScript ではいくらか冗長にはなるけれど、
何の苦もなく Swift と同じスタイルで書き直せる:
http://ideone.com/74oNVU
同様に、「あるテーブルから特定の行だけを抽出し、加工して、集計する処理」は、
Swift だと table.filter { .... }.map { .... }.reduce { .... } とメソッドを連結(チェイン)させた式で書ける
これは Ruby なら table.select { .... }.map { .... }.inject { .... } と書き直せる
ここで、クロージャ内の ..... の部分には、上記のサンプルのように「任意の文(statements)が書ける」
もしかすると、いやこんなの高階関数のプログラミングを知っている人なら当たり前だろ、と感じるかもしれない
ところが Python だけはクロージャの本体に(任意の文ではなく)「式(expression)しか書けない」:
http://ideone.com/tDaDkL # --> Syntax Error になってしまう
だから、他の言語のクロージャに相当するコードを(名前のある)関数としてわざわざ宣言しなければならない:
http://ideone.com/R7twCQ
結果として、Python は手続き型プログラミングであれば簡潔で可読性に優れたコードが書けるスクリプト言語だけれど、
関数型プログラミングには適さず、こうした関数型プログラミングは推奨されていないらしい(これを "酸っぱい葡萄" と言ふ)
http://peace.2ch.net/test/read.cgi/tech/1345123070/70-71
これが Swift や Ruby 等と比較すると、関数型プログラミングで Python が劣る典型的な一例になる
こちらのスレとも関連するのでメモとしてカキコしとく
http://peace.2ch.net/test/read.cgi/tech/1415860741/153
--
Swift や Ruby を含む多くの言語では常識であるけど Python では異なるものとして、
関数型言語に由来した(無名関数やラムダ式とも呼ばれる)クロージャがある
たとえば "The Swift Programming Language" の "Closure" の章にある map メソッドを使った
サンプルコードは、Ruby でも同じスタイルの良く似たコードで書き直せる:
http://ideone.com/TsGD6B
これは Ruby だけでなく、JavaScript でも同じ
Swift や Ruby と比べて構文が簡潔な JavaScript ではいくらか冗長にはなるけれど、
何の苦もなく Swift と同じスタイルで書き直せる:
http://ideone.com/74oNVU
同様に、「あるテーブルから特定の行だけを抽出し、加工して、集計する処理」は、
Swift だと table.filter { .... }.map { .... }.reduce { .... } とメソッドを連結(チェイン)させた式で書ける
これは Ruby なら table.select { .... }.map { .... }.inject { .... } と書き直せる
ここで、クロージャ内の ..... の部分には、上記のサンプルのように「任意の文(statements)が書ける」
もしかすると、いやこんなの高階関数のプログラミングを知っている人なら当たり前だろ、と感じるかもしれない
ところが Python だけはクロージャの本体に(任意の文ではなく)「式(expression)しか書けない」:
http://ideone.com/tDaDkL # --> Syntax Error になってしまう
だから、他の言語のクロージャに相当するコードを(名前のある)関数としてわざわざ宣言しなければならない:
http://ideone.com/R7twCQ
結果として、Python は手続き型プログラミングであれば簡潔で可読性に優れたコードが書けるスクリプト言語だけれど、
関数型プログラミングには適さず、こうした関数型プログラミングは推奨されていないらしい(これを "酸っぱい葡萄" と言ふ)
http://peace.2ch.net/test/read.cgi/tech/1345123070/70-71
これが Swift や Ruby 等と比較すると、関数型プログラミングで Python が劣る典型的な一例になる
111デフォルトの名無しさん
2014/12/10(水) 03:20:00.54ID:lFxVBhH5 そう思うなら脱アルゴリズムしたらいいんじゃない?
まあ頑張れ。
無駄な努力だと思うがな。
まあ頑張れ。
無駄な努力だと思うがな。
112デフォルトの名無しさん
2014/12/10(水) 07:41:04.02ID:8efWXp1v 無名関数とクロージャの区別すらつかない
馬鹿(>>110)がいるスレはここですか?
馬鹿(>>110)がいるスレはここですか?
113デフォルトの名無しさん
2014/12/10(水) 09:24:15.87ID:GPUWLQKM >>110
関数型言語全部敵に回して何が楽しいのか、さっぱり分からん。
関数型言語全部敵に回して何が楽しいのか、さっぱり分からん。
114デフォルトの名無しさん
2014/12/10(水) 18:52:40.21ID:naCNbx5k 関数をステートメントで書けるから関数プログラミングに適してると言いたいのかこの初心者は
115デフォルトの名無しさん
2014/12/11(木) 04:18:01.16ID:fpObf9hC 馬鹿はクロージャスレでも散々に叩かれてたのに、頑なにオレオレ定義を振りかざしてたからな
しまいにゃ「真のクロージャ」だのよく分からないことを言い出す始末
しまいにゃ「真のクロージャ」だのよく分からないことを言い出す始末
116デフォルトの名無しさん
2014/12/15(月) 12:38:25.66ID:ZETjn4CW なにこれ、脱アルゴリズム君なの?
彼についてなら専用スレあるからそっちで。
彼についてなら専用スレあるからそっちで。
117デフォルトの名無しさん
2014/12/23(火) 18:15:43.45ID:ATuB6kuL 関数型には car/cdr は必須ですかね?haskell をみていてもそんな感じだけど
118デフォルトの名無しさん
2014/12/23(火) 18:49:48.75ID:pWRQK/2A むしろcar・cdrのような部分関数(空リストに対して定まらない)はなんだかんだ面倒。
使いやすいパターンマッチを導入して、car・cdrみたいなのは廃止、ってのが良い、と
いうのがほぼ確定した見解だと思う。
使いやすいパターンマッチを導入して、car・cdrみたいなのは廃止、ってのが良い、と
いうのがほぼ確定した見解だと思う。
119デフォルトの名無しさん
2014/12/24(水) 21:17:05.57ID:+1mcRXwz map/reduce 等で car/cdr を隠すってこと?
120デフォルトの名無しさん
2014/12/24(水) 21:30:06.24ID:kKJ427gL パターンマッチって書いてあるじゃない
12128
2016/06/02(木) 21:56:19.82ID:khWGy11Q ・関数型プログラミングにおけるクイックソート・アルゴリズムの実装
http://www.h6.dion.ne.jp/~machan/misc/qsort-in-fp.html
http://www.h6.dion.ne.jp/~machan/misc/qsort-in-fp.html
122デフォルトの名無しさん
2017/02/09(木) 13:52:49.36ID:Lyr2GEHi LLってなーに?
123デフォルトの名無しさん
2017/02/10(金) 23:52:57.41ID:5MVdS2z+ Lonely Lovely
孤独を愛する、孤高のプログラマのことさ
孤独を愛する、孤高のプログラマのことさ
124デフォルトの名無しさん
2017/04/15(土) 18:58:59.13ID:RhESs+iK Lovely Lolita 幼女好きのことさ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- トランプ氏、FRB議長へ「金利を下げろ」と投稿 株価急落で焦りか ★2 [蚤の市★]
- 石破総理「最近はミャクミャクがいないと落ち着かない」「不思議な精神状態」 [煮卵★]
- フジテレビ第三者委員会報告に記載「タレントU」 各局は実名を把握・共有で「使う局ナシ」 [Ailuropoda melanoleuca★]
- たこ焼き1個80円→90円で「売上9割減」も変わらぬ味守る店、 “激安のイメージ”に反論 「昭和の時代にたこ焼きが安かった理由は…」 [煮卵★]
- 世界同時株安、関税不況を懸念 時価総額500兆円超消失 [蚤の市★]
- 【MLB】ドジャース・山本由伸 今季最多97球6回1失点も2勝目ならず 初対戦フィリーズに初回自身の悪送球で失点 [冬月記者★]
- iPhone、米国で33万円に値上げ😲 [521921834]
- 小倉優子「そんな甘い話は世の中にはない」、NISA免税に辛口コメント [249548894]
- 【動画】ジム行ってない奴、突如説教されるwwwwwwwww「ジム行ってない奴なにやってんの?男やめた方がいいよ」 [689851879]
- 【朗報】トランプ氏大反論「私は意図的に市場を崩壊させているだけだ。経済がわかってないわけではない」 [517459952]
- お前らの部屋にある生活に必要ない物って
- 【速報】大谷翔平さん、痛恨の盗塁失敗wwwwwwwwwwwwwwwwww