前スレ
http://toro.2ch.net/test/read.cgi/tech/1320743217/
【アンチ】関数型言語は使えない【玩具】 2
■ このスレッドは過去ログ倉庫に格納されています
2012/02/28(火) 20:45:47.95
2012/02/29(水) 17:06:10.29
藁人形製作乙です。。。
2012/02/29(水) 17:34:45.71
2012/02/29(水) 17:37:02.40
Haskell並みに安全で機械語にコンパイルされたコードをPythonから生成してから言え
2012/02/29(水) 17:44:34.78
2012/02/29(水) 17:46:18.05
実行速度の比較をしているときに安全とか抽象力とかいうから
虫ケラ、じゃなかった、ハスケラはコミュ障だっていわれんの!
虫ケラ、じゃなかった、ハスケラはコミュ障だっていわれんの!
2012/02/29(水) 17:47:33.28
2012/02/29(水) 17:54:26.32
pythonは永続データと破壊操作を巧みに両立させて速度稼いでいるからな。
どっかでhaskellの人が永続=透明性と書かない人は理解してない人と断定してたけど、
どうしてhaskellの有名人はみんなアレなんだ?
どっかでhaskellの人が永続=透明性と書かない人は理解してない人と断定してたけど、
どうしてhaskellの有名人はみんなアレなんだ?
2012/02/29(水) 18:20:19.50
おまえの脳内の勢いがすごい勢いで加速中ということはよくわかった
2012/02/29(水) 18:58:08.72
vectorパッケージが見つからない、と思ったらGHC6.8とはね・・・
古すぎるだろ・・・・
ふふふ残念ながらMPが足りないようだ・・・
・・・とするのは悔しいので前スレのSTUArray版(お借りします)とVector版を手持ちの環境で走らせて計測してみましたよ
STUArray版(コードは省略)
結果(+RTS -sオプションから抜粋)
9 MB total memory in use (0 MB lost due to fragmentation)
Total time 0.12s ( 0.10s elapsed)
次はVector版
コード
module Main where
import qualified Data.Vector.Unboxed as V
main :: IO ()
main = print $ V.head $ V.reverse $ V.iterateN 1000000 (+1) (1 :: Int)
結果
5 MB total memory in use (0 MB lost due to fragmentation)
Total time 0.05s ( 0.04s elapsed)
まあこんなところですね
古すぎるだろ・・・・
ふふふ残念ながらMPが足りないようだ・・・
・・・とするのは悔しいので前スレのSTUArray版(お借りします)とVector版を手持ちの環境で走らせて計測してみましたよ
STUArray版(コードは省略)
結果(+RTS -sオプションから抜粋)
9 MB total memory in use (0 MB lost due to fragmentation)
Total time 0.12s ( 0.10s elapsed)
次はVector版
コード
module Main where
import qualified Data.Vector.Unboxed as V
main :: IO ()
main = print $ V.head $ V.reverse $ V.iterateN 1000000 (+1) (1 :: Int)
結果
5 MB total memory in use (0 MB lost due to fragmentation)
Total time 0.05s ( 0.04s elapsed)
まあこんなところですね
2012/02/29(水) 19:34:46.13
隔離スレとして、ちゃんと機能してるようで何より。
2012/02/29(水) 19:37:34.53
「なんで時間だけに拘るの?」
「遅いのは事実だ!!」
凄いコミュ力だなw
「遅いのは事実だ!!」
凄いコミュ力だなw
2012/02/29(水) 19:46:13.50
2012/02/29(水) 19:55:58.80
コード書いてる時間より
ビルド, 実行, ソースとにらめっこ, ウロウロしながら思考
してる時間の方が長い希ガス
ビルド, 実行, ソースとにらめっこ, ウロウロしながら思考
してる時間の方が長い希ガス
2012/02/29(水) 19:57:15.64
コード量が同じなら抽象度の高い言語の方が多くの事が出来るだろうな。
2012/02/29(水) 20:13:38.52
2012/02/29(水) 20:28:55.82
高水準な言語とはもしかしてCOBOLのことを言っているのだろうか。
2012/02/29(水) 21:33:07.14
リスト操作の速度を比較しようって決まって、
ベンチマークも決まって実装計測して結果が揃ったところで
どうして時間だけとか言い出すのは完全にコミュ障だろw
ベンチマークも決まって実装計測して結果が揃ったところで
どうして時間だけとか言い出すのは完全にコミュ障だろw
2012/02/29(水) 21:38:19.97
数行の「リスト操作」って、何を比較したことにもならんぞw
2012/02/29(水) 22:18:59.01
>>43 くやしいのうw
2012/02/29(水) 22:59:57.73
gccがhaskellになったら考える
なったらなったでメンテする人がいなくなりそうだけど
なったらなったでメンテする人がいなくなりそうだけど
2012/02/29(水) 23:38:01.82
>>43
まあ元々、アッカーマンとか無視してる時点で、無意味だから。
まあ元々、アッカーマンとか無視してる時点で、無意味だから。
2012/03/01(木) 00:21:41.07
haskellが一行で配列を高速にreverseしたのがそんなに悔しいんですか?
2012/03/01(木) 06:12:44.47
reverse関数「を」どれくらい簡潔に実装できるかって話してたのに
(しかも言い出したのはHaskeller)
ライブラリのreverse関数呼び出してドヤ顔して馬鹿じゃないの?
(しかも言い出したのはHaskeller)
ライブラリのreverse関数呼び出してドヤ顔して馬鹿じゃないの?
2012/03/01(木) 06:19:26.14
>>31を「1行」とかいう人は
目か頭のいずれかもしくは両方とも悪い。
目か頭のいずれかもしくは両方とも悪い。
2012/03/01(木) 06:23:35.74
2012/03/01(木) 06:48:15.28
>>46
アッカーマンを無視するってどういうこと?
アッカーマンを無視するってどういうこと?
2012/03/01(木) 08:08:18.25
>>48
ん、ああそういう流れだっけ?
じゃこれで
module Main where
import Prelude hiding (length, head)
import Data.Vector.Unboxed
rev :: Vector Int -> Vector Int
rev v = generate (length v) $ \ i -> v ! (length v - 1 - i)
main :: IO ()
main = print $ head $ rev $ iterateN 1000000 (+1) (1 :: Int)
9 MB total memory in use (0 MB lost due to fragmentation)
Total time 0.06s ( 0.05s elapsed)
今度はgenerate自作しろって言い出すんでしょうかね(笑)
ん、ああそういう流れだっけ?
じゃこれで
module Main where
import Prelude hiding (length, head)
import Data.Vector.Unboxed
rev :: Vector Int -> Vector Int
rev v = generate (length v) $ \ i -> v ! (length v - 1 - i)
main :: IO ()
main = print $ head $ rev $ iterateN 1000000 (+1) (1 :: Int)
9 MB total memory in use (0 MB lost due to fragmentation)
Total time 0.06s ( 0.05s elapsed)
今度はgenerate自作しろって言い出すんでしょうかね(笑)
2012/03/01(木) 08:26:52.95
っていうか『プリミティブなアルゴリズムが簡潔に書ける!』とか言って
車輪の再発明繰り返して喜んでるだけのhaskellerに問題があるよねえ
(どういう意味にせよ)少しは実用的な話をしようぜ?
車輪の再発明繰り返して喜んでるだけのhaskellerに問題があるよねえ
(どういう意味にせよ)少しは実用的な話をしようぜ?
2012/03/01(木) 09:13:52.23
2012/03/01(木) 09:17:06.03
>>52
おそ!
おそ!
2012/03/01(木) 10:16:55.81
2chで”流れ”を感じ始めたら、少なくとも二重の意味でヤバイな。
2012/03/01(木) 11:00:27.41
2012/03/01(木) 12:27:42.50
Rは関数型に入りますか?
2012/03/01(木) 12:38:56.07
C言語プリプロセッサは関数型に入りますか?
2012/03/01(木) 16:28:17.22
バナナの皮は関数型言語に入りますか?
λ
形が似てるんですが
λ
形が似てるんですが
2012/03/01(木) 16:39:32.31
お前、先生が許可したら人も殺すのか
関数型言語を殺すつもりか!
関数型言語を殺すつもりか!
2012/03/01(木) 19:44:58.10
haskellの遅延評価は、元々先行評価よりも遅い傾向にあるんだけどな・・・
(一部のみ、先行評価より速い)
そもそも、reverseが単方向リストに不利なわけだが・・・
とりあえず、main/print(IOモナド使った関数)以外の関数を自作してみた
http://ideone.com/15yhM
自分がHaskellに惚れたのは、IO関連以外は言葉遊びみたいな感じで自作出来るのが楽しいから
(rangeはもうちょっと作りこめたかも・・・)
速さよりも、その構造を調べるのが楽しい
data Natural = Zero | Succ (Natural) deraiving (Eq,Ord,Show,Read)
自然数の定義と、リストの定義が似ているのが分かる。
自然数は、その長さそのものが数字としての意味を持ち、リストは長さにも長さと言う意味はあるが、自然数との決定的な違いは、要素自体も値を持っているか?だけだと言うのが分かる
遅延評価生かしたプログラムなら、ファイル処理とかだろうけど、ideoneでファイルの読み込ませ方知らん(と言うか、在るのか?)
ので、一応、こんなのも作ってみた(1から1000000までの足し算の合計のリストを作って、先頭の10要素を表示)
http://ideone.com/insk7
簡約の様子を見てみると関数同士が絡み合って、一番外側の関数の終了条件のみで、他の関数の終了条件を満たして無くても、関数が終わるのが自然と理解できる
もちろん、最初から無駄の無い処理を書かれると負ける。foldllやmapみたいな、状態を次の再帰に引き摺らない様に書けば、スタック消費が抑えられるって言うだけで、Haskell自体の最適化は弱い
(一部のみ、先行評価より速い)
そもそも、reverseが単方向リストに不利なわけだが・・・
とりあえず、main/print(IOモナド使った関数)以外の関数を自作してみた
http://ideone.com/15yhM
自分がHaskellに惚れたのは、IO関連以外は言葉遊びみたいな感じで自作出来るのが楽しいから
(rangeはもうちょっと作りこめたかも・・・)
速さよりも、その構造を調べるのが楽しい
data Natural = Zero | Succ (Natural) deraiving (Eq,Ord,Show,Read)
自然数の定義と、リストの定義が似ているのが分かる。
自然数は、その長さそのものが数字としての意味を持ち、リストは長さにも長さと言う意味はあるが、自然数との決定的な違いは、要素自体も値を持っているか?だけだと言うのが分かる
遅延評価生かしたプログラムなら、ファイル処理とかだろうけど、ideoneでファイルの読み込ませ方知らん(と言うか、在るのか?)
ので、一応、こんなのも作ってみた(1から1000000までの足し算の合計のリストを作って、先頭の10要素を表示)
http://ideone.com/insk7
簡約の様子を見てみると関数同士が絡み合って、一番外側の関数の終了条件のみで、他の関数の終了条件を満たして無くても、関数が終わるのが自然と理解できる
もちろん、最初から無駄の無い処理を書かれると負ける。foldllやmapみたいな、状態を次の再帰に引き摺らない様に書けば、スタック消費が抑えられるって言うだけで、Haskell自体の最適化は弱い
2012/03/01(木) 22:13:10.07
不覚にも>>60-61の流れに
64デフォルトの名無しさん
2012/03/01(木) 22:56:48.12 なんで、list reverseだけでここまで引っ張ってるんだ!?
>>11を受けて関数型言語/命令型言語の適材適所の話題になると期待したのだが。
>>11を受けて関数型言語/命令型言語の適材適所の話題になると期待したのだが。
2012/03/01(木) 23:19:04.92
>>64
まあここは隔離スレだし、目的が互いに異なる言語同士を単純作業で比較したがる人が集まる場所でもある。
鳥と魚を比較するのに、共通項目だからといって体重や肺活量で比較するようなもんで、最重要と言えるほどの意味は無いと思うが。
比較するなら、計算モデルからのアプローチ(CTMCPなど)も有るので、該当スレが宜しいかと。
まあここは隔離スレだし、目的が互いに異なる言語同士を単純作業で比較したがる人が集まる場所でもある。
鳥と魚を比較するのに、共通項目だからといって体重や肺活量で比較するようなもんで、最重要と言えるほどの意味は無いと思うが。
比較するなら、計算モデルからのアプローチ(CTMCPなど)も有るので、該当スレが宜しいかと。
2012/03/02(金) 10:52:02.59
本スレで煽り質問しかできないバカは回線切って吊れ
2012/03/02(金) 11:57:42.38
>>62
>haskellの遅延評価は、元々先行評価よりも遅い傾向にあるんだけどな・・・
>(一部のみ、先行評価より速い)
評価する際の処理時間が先行評価より速い遅延評価って尊えば何だっけ?
遅延評価を使ったプログラムの総時間と混同してないか?
>haskellの遅延評価は、元々先行評価よりも遅い傾向にあるんだけどな・・・
>(一部のみ、先行評価より速い)
評価する際の処理時間が先行評価より速い遅延評価って尊えば何だっけ?
遅延評価を使ったプログラムの総時間と混同してないか?
2012/03/02(金) 11:58:15.19
2012/03/02(金) 13:03:35.88
>>67
>評価する際の処理時間が先行評価より速い遅延評価って尊えば何だっけ?
遅延評価とか先行評価とかいうのは評価『戦略』であって、『評価するかどうか』を決めるだけだ。
実際に『評価する際』には評価戦略の段階は通り過ぎてるからその問は無意味だろう。
そして遅延評価は評価するまでに猶予を置く意味合いしか無いから、
無駄な計算をしないという仮定のもとでは、遅延評価戦略が先行評価戦略よりも速くなることは有り得ない。
>>62のいう『一部』というのはたらい回し関数みたいなもののことを言ってるんだろうが、
あれはグラフ簡約がたまたまメモ化の役割を果たし無駄が省けているためであって遅延評価だからではない。
そもそも速度で評価戦略を語ることがナンセンスだよ。
あれは(たらい回しみたいな)一部の計算を無駄なく書くのを簡単にするためのものだ。
無駄なく書くのが難しくなってる計算の方が多くね、ってのが遅延評価に対して意味のある批判だろうよ。
>評価する際の処理時間が先行評価より速い遅延評価って尊えば何だっけ?
遅延評価とか先行評価とかいうのは評価『戦略』であって、『評価するかどうか』を決めるだけだ。
実際に『評価する際』には評価戦略の段階は通り過ぎてるからその問は無意味だろう。
そして遅延評価は評価するまでに猶予を置く意味合いしか無いから、
無駄な計算をしないという仮定のもとでは、遅延評価戦略が先行評価戦略よりも速くなることは有り得ない。
>>62のいう『一部』というのはたらい回し関数みたいなもののことを言ってるんだろうが、
あれはグラフ簡約がたまたまメモ化の役割を果たし無駄が省けているためであって遅延評価だからではない。
そもそも速度で評価戦略を語ることがナンセンスだよ。
あれは(たらい回しみたいな)一部の計算を無駄なく書くのを簡単にするためのものだ。
無駄なく書くのが難しくなってる計算の方が多くね、ってのが遅延評価に対して意味のある批判だろうよ。
2012/03/02(金) 13:11:35.99
>>69
>そもそも速度で評価戦略を語ることがナンセンスだよ。
別にそんな話はしてなくて、「先行評価より早いものがある」について具体例が知りたいだけ。
だから、総時間と混同してないか?って書いたんだがなあ。
どっかでの、Haskell=遅いって話のことなら俺は無関係。
>そもそも速度で評価戦略を語ることがナンセンスだよ。
別にそんな話はしてなくて、「先行評価より早いものがある」について具体例が知りたいだけ。
だから、総時間と混同してないか?って書いたんだがなあ。
どっかでの、Haskell=遅いって話のことなら俺は無関係。
2012/03/02(金) 13:15:22.81
だからさ、評価戦略によって『評価するかどうか』が決まってからは遅延評価も先行評価も同じ道を辿るんだから、
評価戦略に対して「aはbより早い」とかいうのは論理的に間違ってるってこと。
評価戦略に対して「aはbより早い」とかいうのは論理的に間違ってるってこと。
2012/03/02(金) 13:20:50.03
>そもそも速度で評価戦略を語ることがナンセンスだよ。
これはhaskellerの負け惜しみとかそう言うんじゃなくてさ、
速度と評価戦略が別次元の問題だってことを言いたいだけ。
haskellのたらい回しとcのたらい回しは記述が似てても、
『そもそもやってることが違う』んだから。
これはhaskellerの負け惜しみとかそう言うんじゃなくてさ、
速度と評価戦略が別次元の問題だってことを言いたいだけ。
haskellのたらい回しとcのたらい回しは記述が似てても、
『そもそもやってることが違う』んだから。
2012/03/02(金) 13:37:52.45
遅延評価は計算量を減らす目的もあるけどそれが全てじゃないよね
それに同じ計算量、無駄を省いたCの処理とかに敵うわけないし
割と手軽に計算量を減らせる(処理系にお任せ出来る)ってくらいだろう
無限リストとかを評価しちゃうと氏ぬのは言語に関係無いから
その辺はCでも配列でなく関数とかで仮想化するし
それに同じ計算量、無駄を省いたCの処理とかに敵うわけないし
割と手軽に計算量を減らせる(処理系にお任せ出来る)ってくらいだろう
無限リストとかを評価しちゃうと氏ぬのは言語に関係無いから
その辺はCでも配列でなく関数とかで仮想化するし
2012/03/02(金) 13:45:42.93
>それに同じ計算量、無駄を省いたCの処理とかに敵うわけないし
いや、まったく同じ計算をするなら同じ処理時間になるよ。
ならないとしてもそれは遅延評価のせいではない。
いや、まったく同じ計算をするなら同じ処理時間になるよ。
ならないとしてもそれは遅延評価のせいではない。
2012/03/02(金) 13:47:20.92
>遅延評価戦略が先行評価戦略よりも速くなることは有り得ない。
よくみると俺もこんな発言をしていた。
俺も論理的に間違っているということだな(キリッ
よくみると俺もこんな発言をしていた。
俺も論理的に間違っているということだな(キリッ
2012/03/02(金) 13:51:12.30
2012/03/02(金) 13:54:12.03
>それに同じ計算量、無駄を省いたCの処理とかに敵うわけないし
というか『適うわけない』と思った根拠はなんなのだ?
論理的に同じ計算をするならあとはなんというか、言語の基礎体力だけの問題になるはずだが。
あれか、haskellではIntがボックス化されているからとかなんかそういうのか。
というか『適うわけない』と思った根拠はなんなのだ?
論理的に同じ計算をするならあとはなんというか、言語の基礎体力だけの問題になるはずだが。
あれか、haskellではIntがボックス化されているからとかなんかそういうのか。
2012/03/02(金) 13:56:34.33
>>74
>まったく同じ計算をするなら同じ処理時間になる
同じロジック書いても
遅延評価を実装するために発生するオーバーヘッドとかの影響で
まったく同じ計算(機械語レベルで)にはならないんじゃないの?
>まったく同じ計算をするなら同じ処理時間になる
同じロジック書いても
遅延評価を実装するために発生するオーバーヘッドとかの影響で
まったく同じ計算(機械語レベルで)にはならないんじゃないの?
2012/03/02(金) 14:03:36.00
2012/03/02(金) 14:11:15.32
>>-79までの中に、62が居るとのお告げがあった。
2012/03/02(金) 14:18:12.44
>>78
遅延させることに意味がある場合、それはオーバーヘッドとは言わないんでは?
計算結果を明示的にキャッシュするのだってもちろんスペース喰うわけで。
そういうことじゃなくてGHCの実装の深いところに基づくオーバーヘッドだというなら、
俺にもよく分からないが、お前にはそれが有意な差であると合理的に説明できるのか?
遅延させることに意味がある場合、それはオーバーヘッドとは言わないんでは?
計算結果を明示的にキャッシュするのだってもちろんスペース喰うわけで。
そういうことじゃなくてGHCの実装の深いところに基づくオーバーヘッドだというなら、
俺にもよく分からないが、お前にはそれが有意な差であると合理的に説明できるのか?
2012/03/02(金) 14:20:45.94
2012/03/02(金) 14:35:31.40
2012/03/02(金) 14:38:40.45
2012/03/02(金) 14:39:21.82
このコストっては手間的な意味じゃなくてね
2012/03/02(金) 14:41:06.81
あと機械語レベルで差が出るというソースは?
簡易なものなら是非見てみたい。
簡易なものなら是非見てみたい。
2012/03/02(金) 14:44:46.65
無いと思うならそれでいいよ
haskellはcと同じ速度ってことでさ
haskellはcと同じ速度ってことでさ
2012/03/02(金) 14:45:35.68
まあ説明できないことは最初から分かってたさ
2012/03/02(金) 14:49:53.34
オーバーヘッドがあったとしても遅延評価には利点があるという話だったんだけど
ここまで速度に拘るとは思わなかったからね
ここまで速度に拘るとは思わなかったからね
2012/03/02(金) 14:53:17.52
あるかどうかもよく分からないオーバーヘッドの話を持ち出したのはそちらではなくって?
まあね。実際俺もあるとおもうよ。オーバーヘッド。
話として持ち出すからには根拠を持っていてほしいなと思っただけさ。
まあね。実際俺もあるとおもうよ。オーバーヘッド。
話として持ち出すからには根拠を持っていてほしいなと思っただけさ。
2012/03/02(金) 14:56:03.90
ちなみに俺がオーバーヘッドがあると思ったのは
単にゼロオーバーヘッドでの実装は無理だろうと思ったのと
「c言語 haskell 速度比較」とかでググッた結果を見たというだけ
流石に個々の速度比較の詳細までは知らない
逆にオーバーヘッドが無いってのを示してくれたらもちろん前言撤回するよ
単にゼロオーバーヘッドでの実装は無理だろうと思ったのと
「c言語 haskell 速度比較」とかでググッた結果を見たというだけ
流石に個々の速度比較の詳細までは知らない
逆にオーバーヘッドが無いってのを示してくれたらもちろん前言撤回するよ
2012/03/02(金) 14:59:04.52
2012/03/02(金) 16:34:36.45
遅延評価って、一見全部読み込んでから一部だけ出力するって処理で、必要な分しか読み込まないってので、>>62の上のmyreverseはリストを反転する必要があるから、全部読み込んでるけど、下のaddlistをmytake 10 してる方は、最初の10要素分しか読み込まない
先行評価だと、全部読み込んでから始まるか、最初の10要素だけ読み込む様に書き分ける
ファイル処理とかで、書き分ける必要が無い事になる
とは言え、最近の言語なら、オブジェクトにその辺の処理を押し込んでそうだが
先行評価だと、全部読み込んでから始まるか、最初の10要素だけ読み込む様に書き分ける
ファイル処理とかで、書き分ける必要が無い事になる
とは言え、最近の言語なら、オブジェクトにその辺の処理を押し込んでそうだが
2012/03/02(金) 16:37:16.86
オーバーヘッドつーか、評価機構の構造自体が違うのに、
全体の処理時間が同じなわけがないだろjk
全体の処理時間が同じなわけがないだろjk
2012/03/02(金) 17:43:05.82
正格評価でもありとあらゆるところにdelayとforceを忍ばせれば
遅延評価になると思うんだけど
計算量が減るところだけ遅延評価にした方がやっぱりいいと思うんだよね
遅延評価になると思うんだけど
計算量が減るところだけ遅延評価にした方がやっぱりいいと思うんだよね
2012/03/02(金) 20:31:03.15
2012/03/02(金) 23:50:52.90
配列のreverseくらいならC++でも一行だな
std::copy(in.rbegin(), in.rend(), std::back_inserter(out));
std::copy(in.rbegin(), in.rend(), std::back_inserter(out));
2012/03/03(土) 00:36:28.38
最近の関数型って実装まで気にするような段階なんだな
はてなあたりの選民気取りが「haskellはCより速い(キリッ」とか言い始めたら俺もそろそろ関数型始めようかな
はてなあたりの選民気取りが「haskellはCより速い(キリッ」とか言い始めたら俺もそろそろ関数型始めようかな
2012/03/03(土) 05:11:01.91
速度稼ぐ必要があるコードだと結局はモナド頼りなんだろ?
関数型言語って名前捨てて”モナド型言語”とでも呼べばいいんじゃね?
関数型言語って名前捨てて”モナド型言語”とでも呼べばいいんじゃね?
100デフォルトの名無しさん
2012/03/03(土) 06:46:14.07 おめえらhaskell以外の話もしろよ
101デフォルトの名無しさん
2012/03/03(土) 06:54:33.70 遅延評価のコストについては、コンパイラの本とかに載ってることあるよ
102デフォルトの名無しさん
2012/03/03(土) 07:59:28.26 >>98 大学の研究のレベルから、一般はてな民が話題にするまで10年ぐらいだから、
おまえは常に10年遅れだけど、好きにすればいいと思うよwwww
おまえは常に10年遅れだけど、好きにすればいいと思うよwwww
103デフォルトの名無しさん
2012/03/03(土) 08:12:49.54 xmonadの影響で今になってX11プログラミングを始めた漏れが
8時(10分以上遅れ)をお知らせしますね
8時(10分以上遅れ)をお知らせしますね
104デフォルトの名無しさん
2012/03/03(土) 09:12:49.53 10年遅れどころかMLなら40年遅れHaskell直系のMirandaからでも30年遅れだろ
105デフォルトの名無しさん
2012/03/03(土) 10:58:06.61 作ればあるもん
106デフォルトの名無しさん
2012/03/03(土) 13:05:49.24 >>104
登場時期が基準とかおもちゃじゃあるまいし
登場時期が基準とかおもちゃじゃあるまいし
107デフォルトの名無しさん
2012/03/03(土) 13:19:05.21 ギークやらアルファブロガーやら呼ばれる人が話題する時点ではまだ玩具
それを使用する企業やそれなりの規模のオープンソースプロジェクトが
出始めるくらいから実用品だな
それを使用する企業やそれなりの規模のオープンソースプロジェクトが
出始めるくらいから実用品だな
108デフォルトの名無しさん
2012/03/03(土) 14:01:18.50 Javaと心中するのは自由ですから、他人を巻き込もうと必死にならないでねw
109デフォルトの名無しさん
2012/03/03(土) 14:10:19.50 定番の必死認定
110デフォルトの名無しさん
2012/03/03(土) 14:43:35.56 このスレでの関数型言語って純粋関数型言語(Haskell,Mirandaとか)だけ?
非純粋関数型言語(Lisp,R,OCamlとか)も含むの?
Haskellはよく知らないけどCommon Lispは実用かなって思って
非純粋関数型言語(Lisp,R,OCamlとか)も含むの?
Haskellはよく知らないけどCommon Lispは実用かなって思って
111デフォルトの名無しさん
2012/03/03(土) 15:00:07.62 アンチの脳内の都合で、その場により変わりますw
112デフォルトの名無しさん
2012/03/03(土) 15:05:20.65 >>111
あなたの認識ではどっちですか?
あなたの認識ではどっちですか?
113デフォルトの名無しさん
2012/03/03(土) 15:07:01.59 関数型言語に定義なんてないし的当だよ
一般的な定義は
・関数を実行時に生成できる
・関数を引数として渡せる
・関数を関数の戻り値として返せる
だと思うけど、最近は勝手に
・変数に一度しか代入できない
とかルールを付け加えたり好きかっていう人が増えたから
一般的な定義は
・関数を実行時に生成できる
・関数を引数として渡せる
・関数を関数の戻り値として返せる
だと思うけど、最近は勝手に
・変数に一度しか代入できない
とかルールを付け加えたり好きかっていう人が増えたから
114デフォルトの名無しさん
2012/03/03(土) 15:14:52.67 昔は、関数型言語と比べて手続き型言語は原始的で貧弱に思えたけど、
最近は手続き型言語もクロージャを取り込んで関数的にも書けるから、
そうなると実用上は手続き型言語で十分だと感じるけどな。
基本は手続き的に処理を書きつつ、コレクションの操作だけ map や filter,
reduce を使って関数的に書く。他人にも読みやすいコードを書こうとすれば
最終的にはそのくらいのところに落ち着くと思うけど。
>>108 みたいな「仮想ドカタ」を煽るのは現実が見えていないと思うなあ。
今時、職業プログラマだって C, Java だけじゃなくて JavaScript も Ruby も使うよ。
JavaScript で言えば、JQuery なんて発想がかなり関数的だと思うけど。
XML を対象に XPath でパターンマッチかけて filter やら map やら。
ほとんどそういう処理。
最近は手続き型言語もクロージャを取り込んで関数的にも書けるから、
そうなると実用上は手続き型言語で十分だと感じるけどな。
基本は手続き的に処理を書きつつ、コレクションの操作だけ map や filter,
reduce を使って関数的に書く。他人にも読みやすいコードを書こうとすれば
最終的にはそのくらいのところに落ち着くと思うけど。
>>108 みたいな「仮想ドカタ」を煽るのは現実が見えていないと思うなあ。
今時、職業プログラマだって C, Java だけじゃなくて JavaScript も Ruby も使うよ。
JavaScript で言えば、JQuery なんて発想がかなり関数的だと思うけど。
XML を対象に XPath でパターンマッチかけて filter やら map やら。
ほとんどそういう処理。
115デフォルトの名無しさん
2012/03/03(土) 15:19:10.49 >>113
上の3つだとJavaScriptやC++(functor)、C#(delegate)あたりも含まれるな
初代スレの1はむしろ参照透過性、変数に一度しか代入できないことの方を嫌ってるように見える
上の3つだとJavaScriptやC++(functor)、C#(delegate)あたりも含まれるな
初代スレの1はむしろ参照透過性、変数に一度しか代入できないことの方を嫌ってるように見える
116デフォルトの名無しさん
2012/03/03(土) 15:19:35.75117デフォルトの名無しさん
2012/03/03(土) 15:27:07.99 javascriptはschemeをC言語っぽい文法に直したものだろ
昔から関数型言語と言われているよ
昔から関数型言語と言われているよ
118デフォルトの名無しさん
2012/03/03(土) 15:27:17.91 Haskellなどで言う「関数」は、集合・写像ベースの概念だから、変数の書き換えに依存しないやり方のほうが関数を率直に表現出来るってだけの話だ。
Cにも同じ字面の「関数」があるが、関数型言語の関数と区別したい時は、サブルーチンと呼んだ方が実態に近い。
Cにも同じ字面の「関数」があるが、関数型言語の関数と区別したい時は、サブルーチンと呼んだ方が実態に近い。
119デフォルトの名無しさん
2012/03/03(土) 15:33:16.95 良い所とか取り込んで明確な境界が無くなくなってる面があるんですね
研究目的の言語の成果が実用目的の言語に適用されたと考えたら
必ずしも実用である必要は無いのかもしれませんね
研究目的の言語の成果が実用目的の言語に適用されたと考えたら
必ずしも実用である必要は無いのかもしれませんね
120デフォルトの名無しさん
2012/03/03(土) 15:33:41.38 >>117
それは違うかな。
「言われている」ではなく、
関数型言語を知っている人たちが JavaScript は関数型言語っぽいと
「言っている」が正しい表現じゃないかな。
少なくとも、
Ecma-262 の 4 Overview には
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
ECMAScript is an object-oriented programming language for performing computations and manipulating computational objects within a host environment.
と書いてあるんだから、何言語かと一つに決めるなら、
明らかにオブジェクト指向言語でしょ。
それは違うかな。
「言われている」ではなく、
関数型言語を知っている人たちが JavaScript は関数型言語っぽいと
「言っている」が正しい表現じゃないかな。
少なくとも、
Ecma-262 の 4 Overview には
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
ECMAScript is an object-oriented programming language for performing computations and manipulating computational objects within a host environment.
と書いてあるんだから、何言語かと一つに決めるなら、
明らかにオブジェクト指向言語でしょ。
121デフォルトの名無しさん
2012/03/03(土) 15:40:05.10 >>119
「何ができるか」って意味なら差はどんどん無くなってる
だが、他人のコードを読むときには「何ができないか」ってのも重要で、
そこが手続き型言語と関数型言語では違う
わざわざコードを読んで副作用が無いか目でチェックしなくても
言語仕様で保証されてるなら読むのが楽になる
OOPのアクセス修飾子なんかと同じだな
「何ができるか」って意味なら差はどんどん無くなってる
だが、他人のコードを読むときには「何ができないか」ってのも重要で、
そこが手続き型言語と関数型言語では違う
わざわざコードを読んで副作用が無いか目でチェックしなくても
言語仕様で保証されてるなら読むのが楽になる
OOPのアクセス修飾子なんかと同じだな
122デフォルトの名無しさん
2012/03/03(土) 15:42:52.61 >>120
http://www.ecmascript.org/es4/spec/overview.pdf
ここの4ページにはこうある
ECMAScript 4th Edition (ES4) is a multi-paradigm programming language that is evolved from the
3rd Edition2 (ES3), which in turn is based on JavaScript3, a programming language for the web developed at
Netscape Communications Corporation starting in 1995.
ES3 is a simple, highly dynamic, object-based language that takes its major ideas from the languages Self
and Scheme.
http://www.ecmascript.org/es4/spec/overview.pdf
ここの4ページにはこうある
ECMAScript 4th Edition (ES4) is a multi-paradigm programming language that is evolved from the
3rd Edition2 (ES3), which in turn is based on JavaScript3, a programming language for the web developed at
Netscape Communications Corporation starting in 1995.
ES3 is a simple, highly dynamic, object-based language that takes its major ideas from the languages Self
and Scheme.
123デフォルトの名無しさん
2012/03/03(土) 15:49:23.32124デフォルトの名無しさん
2012/03/03(土) 17:26:19.51 何でも関数型言語にしたがる香具師がいるな…
125デフォルトの名無しさん
2012/03/03(土) 20:52:56.07 関数型言語の判断基準について、整理してみた。大きく3つのグループに分類できる。
・関数型言語(誰も文句無し)
・関数型プログラミングが可能な言語
・それ以外の手続き型言語
FP
---- 壁0. 変数の壁 ----
Haskell
---- 壁1. 純粋性(副作用)の壁 ----
SML/OCaml
---- 壁2. 型推論の壁 ----
Scheme
---- 壁3. 末尾再帰最適化の壁 ----
========<< 越えられない壁 >>========
Smalltalk/Ruby
---- 壁4. 条件判定式/局所宣言式の壁 ----
Perl/Python/JavaScript
---- 壁5. クロージャ/ラムダ式の壁 ----
========<< 越えられない壁 >>========
C/C++/Java...etc
なお、このカキコは「関数型言語Part5」スレの過去カキコ(283-335)を編集したもの
議論の参考になればと思う
・関数型言語(誰も文句無し)
・関数型プログラミングが可能な言語
・それ以外の手続き型言語
FP
---- 壁0. 変数の壁 ----
Haskell
---- 壁1. 純粋性(副作用)の壁 ----
SML/OCaml
---- 壁2. 型推論の壁 ----
Scheme
---- 壁3. 末尾再帰最適化の壁 ----
========<< 越えられない壁 >>========
Smalltalk/Ruby
---- 壁4. 条件判定式/局所宣言式の壁 ----
Perl/Python/JavaScript
---- 壁5. クロージャ/ラムダ式の壁 ----
========<< 越えられない壁 >>========
C/C++/Java...etc
なお、このカキコは「関数型言語Part5」スレの過去カキコ(283-335)を編集したもの
議論の参考になればと思う
126デフォルトの名無しさん
2012/03/03(土) 21:14:44.32 末尾再帰最適化とか、マジ関係無いだろ
実装上の話だろ
実装上の話だろ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★7 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★2 [蚤の市★]
- 公用車カーナビのNHK受信料「全額免除を」 千葉市議会、国に制度創設求める意見書可決 [少考さん★]
- 【食】「シャウエッセンは焼くべからず」暗黙のルールを破り売上高過去最高…日本ハム社員たちが「夜味」にかけた情熱 [ぐれ★]
- 千晴のウンコ
- 死にたい
- 国民「物価高なんとかして」自民党「デフレ脱却!」
- 【朗報】南鳥島のレアアース、中国産の「20倍の純度」青山繁晴氏「日本は資源大国」日本復活のファンファーレが鳴り響く! [673057929]
- 月がきれいですね。
- NATOもレーダー照射問題で中国を批判wwwwww
