関数型言語Part IV
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG関数型言語について話し合いましょう
関連スレ
関数型プログラミング言語ML
http://pc3.2ch.net/test/read.cgi/tech/1012445015/
関数型プログラミング言語Haskell
http://pc3.2ch.net/test/read.cgi/tech/1013846140/
LISP Scheme Part6
http://pc3.2ch.net/test/read.cgi/tech/1031560687/
Emacs Lisp
http://pc3.2ch.net/test/read.cgi/tech/1004551074/
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG関数型言語Part3
http://pc5.2ch.net/test/read.cgi/tech/1037527388/
0004デフォルトの名無しさん
NGNGそれに対する有効な回答がないままw、スレが終了してしまいました。
このスレでは、煽り厳禁で、学部生に理解できる関数型言語の初歩を、扱っていきましょう。
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG> 前スレの最後では、「表示的意味論の定義は、何か。」という基本質問がなされ、
せからしか話はよか。
プログラムなんてのは見た目で何とのう解った気になればそれで良か、
ちうのが表示的意味論たい。どーせコマか話はわからんっちゃろ?
0007デフォルトの名無しさん
NGNG表示的意味論ではプログラムに対して、既定義の数学オブジェクトを対応付ける
(プログラムオブジェクトから数学オブジェクトへの変換を定義する) 事により意味を定義する。
具体的にはここのプログラムオブジェクトに対して意味関数を対応付ける。
┌──────┐
│ プログラム. │
└───┬──┘
│
│ 意味関数
│
↓
┌──────┐
│数学的な表示│
└──────┘
具体的には構文要素に対応付けられる意味関数の集合として定義する。
M : T → D
Tは構文要素であり、Dは表示の集合であり、意味ドメインと呼ばれる。
0008デフォルトの名無しさん
NGNGプログラムの実行結果を判定できるような仕組みを与える事で意味を定義する。
すなわちプログラムを解釈実行できるようなオートマトン(自動機械)を定義する事にな る。
しかしながら何らかの意味では、実行すると言う事で、実装等の関わりが強くな りすぎるという欠点を持つ。
┌──────┐ ┌──────┐
│ プログラム. │ │ 入力 │
└───┬──┘ └───┬──┘
└───────┬───────┘
│操作的仕様に基づく解釈実行
↓
┌──────┐
│ 実行結果 │
└──────┘
0009デフォルトの名無しさん
NGNGprogram_effect(p:Program, input:N): N* is
do
result := instruction_effect(p.body, input, <>);
end
rを入力、fを内部状態として、命令iを実行する
instruction_effect(i:Instruction, r:N, f:N*): N x N* is
do
inspect i
when Double_to_even then result := <2*r, f>
.......
end
この様にプログラムをその構成要素に分割し、構成要素毎にどの様な動作をするかを定義する。
この様な定義であるので、必要以上に動作に依存してしま うと言う欠点がある。
0010デフォルトの名無しさん
NGNG公理的意味論では意味をプログラムのセオリーとして記述する。
そしてセオリー の証明という作業を通じて、意味の正しさを確かめる。
セオリーは以下の3 つの要素から構成される
・構文規則
・公理
・推論規則
そして、プログラムαを次のような形式で表現する
{事前条件}α{事後条件}
これをpre-post式と呼ぶ。公理と推論規則はこのpre-post式を利用する。
この式は、事前条件が成り立っている(真である)という条件下でαを実行すると 事後条件が成り立つ、
と言う事を表現している。そして公理的意味論はこの 式を証明する(真偽を判定する)手段を提供している。
具体的にはαが文の列とするし、それをα1、α2、....、αnとすると、次のような式の列を順次証明する事になる
{事前条件1}α1{事後条件1}
{事前条件2}α1{事後条件2}
......
{事前条件n}αn{事後条件n}
ここで事後条件iは事前条件i+1と同じものである。
公理としては、プログラミン グ言語の各基本要素に対して、pre-post式を与える事になる。
---------------------------------------------------------------------------------------------
0011デフォルトの名無しさん
NGNG{P(register,file)} Double_to_even {even(register) ∧ P(register/2 ,file)}
{P(register,file)} Double_to_odd {odd(register) ∧ P((register-1)/2 ,file)}
{P(register,file)} Halve {P(2*register ,file) ∨ P(2*register+1, file)}
registerは入力として与えられた変数であり、fileは実行環境における局所的な 値の集合である。またpre、postの条件におけるregisterとfileは各々 Double_to_evenの実行前と実行後の値を意味する。
--------------------------------------------------------------------------------
公理的手法はこの様に意味を定義するためのものとしてだけではなく、
プログラ ムの証明のための手段としても使われている。
すなわちプログラム全体を以下の様にpre-post式で表し、
プログラムが満たすべき条件を事後条件として、
この式を分割し、各式を証明する事により、
プログラムが正しいと言う事が 証明できた事になる、という物である
{事前条件}プログラム{事後条件}
例えばa,b,cを入力として、それを係数とする二次方程式の解をx,yに求めるプログラムをPとすると、
その証明のための式は次の様に書ける
{a,b,cは任意の実数、但しb*b-4.0*a*c>0}P{a*x*x+b*x*c=0 AND a*y*y+b*y+c=0}
0012デフォルトの名無しさん
NGNG2つの観点から、意味が明確に定められている必要がある。
プログラマの視点:自分の書いたプログラムがどの様な動作をするの かを正確に理解する必要がある。これが曖昧であれば、作成したプログ ラムの動作は実行によってしか確認できない
コンパイラ作成者の視点:プログラムに対してどの様な目的コードを 生成すればよいかを正確に理解する必要がある。これが曖昧であれば、同 じプログラムでもコンパイラによって動作が異なる可能性がある。
ユーザはコンパイラは全て正しくコンパイルすると考えているが、コンパイラの 作成者の立場から考えるならば、作成したコンパイラの正しさを何に基 づいてテストするのか?
例えば次のような命令列を考える
x = 2;
x = x++;
x++はxの値を評価した後、その値を1増やすと言う事であるので、...
このように自然言語だけによっていた場合、種々の曖昧性が生じる。この様に意味を正確に定義する事は重要であるが、定義の仕方によって次のよう な手法が考えられている
意味論について述べる前に理解するために必要となる数学 基礎について解説しておく。
・操作的意味論 >>8-9
・公理的意味論 >>10-11
・表示的意味論 >>7
0013デフォルトの名無しさん
NGNG<Program> ::= PROGRAM <Instruction> END
<Instruction> ::= Double_to_even | Double_to_odd |
Halve | Print | <Compound>
<Compound> := COMPOUND <Instruction>* END
Double_to_evenは入力を2倍する。Double_to_oddは2倍して、1を足す。 Halveは半分にする。そしてPrintは値を表示する。プログラム例としては以 下の様なものがある。
PROGRAM
COMPOUND
Double_to_even; Double_to_odd; Havlve; Print
END
END
このプログラムに対して入力が1の場合、2を出力する。
0014デフォルトの名無しさん
NGNG長々とコピペご苦労だが、ようするに>>6ってことだろ?
0015デフォルトの名無しさん
NGNGカワイソウだから放置放置・・・
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNGでは、意味はどの様に定義されるのか?
--------------------------------------------------------------------------------
【プログラムの正しさ】
構文と意味で述べたように「プロ グラムが正しい」という内容には種々のレベルがある。
しかしながら一般的 にはっきりしている事は、
正しいとは「何らかの形式で定められたルール、 条件に則っている」という事である。
逆に言うならば則っているルール を用意しない限り、正しい、正しくない、という議論は成立しない。
この様 な観点から、意味に関わるルール、条件を記述するものが意味論である。
--------------------------------------------------------------------------------
0018デフォルトの名無しさん
NGNGプログラミング言語の世界では意味とは一般には以下の様な物と考えられている。
┌───────┐
┌──────┐ │ プログラム又は.│ ┌──────┐
│実行前の状態├→│ プログラム要素.├→│実行後の状態│
└──────┘ │ の実行 │ └──────┘
└───────┘
プログラムの実行前にある状態(内部状態:プログラムが持つ変数の値の集合)にある時に、
実行後にどの様な状態になるか。普通は実行前の状態に基づいて実行後の状態を記述する。
例えば、変数aの値を2倍にするプログラムであれば、実行後の状態は次の様に書ける。
正確にはa以外の変数の値は変化していない事を記述する必要がある。
実行後のa=実行前のa*2
ここで注意すべき事は実行後の状態の記述において、実行前の変数の値を利用すると言う事である。
そのためにaに対して実行前のaと実行後のaを区別する表記が必要となる。
意味とはこの様に各命令の効果を記述する物であるが、
プログラムは基本的な構成要素およびその組み合わせ規則からなる物と言える。
その観点から考えるならば、意味の記述は以下の2つのものの記述からなることになる:
1. 基本構成要素の意味
例えば++という演算子は何を意味するか
2. 組み合わせ規則の意味
例えば、IF C THEN S1 ELSE S2 というIF文はC,S1,S2の意味に基づき、どの様な動作をするのか?
0019デフォルトの名無しさん
NGNG1. 意味論の目的は次の2点である
1) プログラマにプログラムの一律で、曖昧性のない正しい解釈を提供する
2) コンパイラの作成者にプログラムの一律で、曖昧性のない正しい解釈を提供する
2. プログラムの意味は基本構成要素の意味と組み合わせ規則の意味からなる
3. プログラムの意味とは内部状態がどの様に変わるかの記述である
4. 意味は構文的に認識された対象に対してのみ考える事ができる
5. 意味が定義されているプログラミング言語で書かれたプログラムは、その意味を定義する事ができる
0020デフォルトの名無しさん
NGNGプログラムに適用することはほとんどの場合現実的ではないということ
ぐらい理解してるんだろうな?
その意味では>>6と大差ねえんだよ。
0021デフォルトの名無しさん
NGNGカワイソウだから放置放置・・・
0022デフォルトの名無しさん
NGNGじゃ、おまぃはこのスレに来る必要がないな。
二度と書き込みすんな。さっさと氏ね
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG表示的意味論なんて使わんでも関数型言語は色々と便利だと思うが?
それともスレタイは無視してdenotational semantics専用スレにでもするのか?
0025デフォルトの名無しさん
NGNG>>20みたいな底辺人生。
あたしが>>20の境遇になったらぁ〜、
んんー、さっさと富士樹海に入って命を絶つだろうな(キャハ
0026デフォルトの名無しさん
NGNG会話で使いたくてたまらない >>24 の居るスレ。
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNGキャー、ここのスレ、ヲタの巣窟だわぁ〜
スレにカキコしただけで妊娠しそう
0029デフォルトの名無しさん
NGNG煽りは厳禁でおながいしますヨ
0030デフォルトの名無しさん
NGNG間違った人生を歩みつづけて、頭がいかれちまったんだろうね。カワイソっと。
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNGちょっとでもこの分野でマジメに勉強した人間なら、
聞いちゃいらんないハッタリと虚勢の塊のあのおヒトがw
0033デフォルトの名無しさん
NGNGプッ
きみ、来なくていいから(苦笑
0034デフォルトの名無しさん
NGNGこっちの質問に逆質問して、悦に入ってる。カワイソウな人だ。
この業界思ってるより狭いから、
もし本当に凄い人が居て何らかの成果が出てるのなら、
とっくに2〜3回は耳に入ってきていて当然なのに、ねぇ(w
ナニを勘違いして虚勢張ってるんだかw
0035デフォルトの名無しさん
NGNG何この人?
病気?
0036デフォルトの名無しさん
NGNGプッ
きみ、来なくていいから(苦笑
0037デフォルトの名無しさん
NGNGだったらなんで、
大手メーカは人呼ぶとき派遣会社やA○Cに頼るんだ。
説明してくれよ。
0038デフォルトの名無しさん
NGNG君みたいに、そそっかしかったり、現状認識が一般とずれてる人間は、
ややこしいから、このスレに来るな。
0039デフォルトの名無しさん
NGNGどこがどう現状認識とずれてる?指摘してくれよ。
0040!= 38
NGNG> >>36=35 ?
が>>36=34 ?のミス -> そそっかしい。
あとの文章 -> 意味不明。
一般人の認識では、>>34==>>36が有名なサイコさんです。
ということではないかな。
00411
NGNGふつ〜、二言三言会話をすれば、相手がどんなレベルの人間か理解できるもんだけど、
こいつに限っては、周りの人間がとんでもなくアフォーなのか、
あるいは社会から孤立した生活を送ってて、自分のレベルや格ってもんが見えて無いらしい。
そして、どうしようもなく追い詰められると、即座に相手をサイコ呼ばわり。(>>39)
悲惨な人生送ってる惨状が、手に取るようにかいま見えて、吐き気がするよ
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGいきなり他人をサイコ呼ばわりしたり、俺はお前より格上だとか痛い台詞キメてみたり。
いちいち煽り口調でレス付けて何になるのよ?
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGなんか携帯JavaVMの開発者と知り合いっつうのが唯一の自慢の、
可哀想な文系老人コーダーだったよ。
春になると、関数型言語スレにも変な人が出て怖いね。例えば>>43-44
0046デフォルトの名無しさん
NGNG変なの相手にしても、彼らの頭の中は被害妄想やらルサンチマンばっかで、
何一つ得る物が無いよ。
例えば、誰もどこにも書いていない「格上」という言葉を聞いたと主張する>>43とか、
いつも自分でサイコなネタ振って、板やスレの雰囲気を最悪にする>>43とか、
リアルに嫌でしょ。
そーゆーのにレス付けると、彼らの悪い部分がスレ全体に広がって、誰も寄り付かなくなるよ。
例えば、偽スレ「関数型言語Part4」がその実例。
0047デフォルトの名無しさん
NGNGなんでよりによって関数型言語に粘着してたのかな?
なんかLisp処理系を研修で作った、とかのたまうから、精一杯相手してあげたけど、
彼なりのルサンチマンなり、強い思いっつうもんは、結局よくわかんなかった。
しかも、ご老体、煽りばっかで、自分では決して関数型言語のネタ振れないのね。
関数型言語の話しないなら、スレに来る必要ないのにねぇ。何考えてるんだ、奴は。
ましてや、>>43みたく鬱病患者で、赤の他人に毒吐くだけが目的で
掲示板巡りしてるサイコは、逝ってヨシですな。
0048デフォルトの名無しさん
NGNGそのうちキチガイ(例えば>>47)もそのうち病院が呼び戻すでしょ。
それまでの辛抱だな。
0049デフォルトの名無しさん
NGNG例えば、>>48がその例。
0050デフォルトの名無しさん
NGNG例えば、>>49がその例。
0051デフォルトの名無しさん
NGNG私>>1は、関数型言語Part1の頃から居る住人だということも知らずに、
>>48のような薄っぺらい煽りをしている。
しかも>>48は、会うたび、事ある毎に、サイコな言動を繰り返して、周囲を引かせている。
これこそ、病気と言わずして、なんと呼ぶべきだろう。
0052デフォルトの名無しさん
NGNG私>>1は、関数型言語Part1の頃から居る住人だということも知らずに、
>>50のような薄っぺらい煽りをしている。
しかも>>50は、会うたび、事ある毎に、サイコな言動を繰り返して、周囲を引かせている。
これこそ、病気と言わずして、なんと呼ぶべきだろう。
0053デフォルトの名無しさん
NGNG> 私>>1は、関数型言語Part1の頃から居る住人だということも知らずに、
なんてことを恥も臆面もなく言いたければ
せめて名前欄に「1」と入れてからにしる
0054デフォルトの名無しさん
NGNGアスペルの可哀想な子供は、自分が大人になって放置してあげるしかありませんよ。
残念ながら、彼らは人間であって人間ではないので、救済してあげることは不可能です。
0055デフォルトの名無しさん
NGNG俺もpart1からの住民だが、あんたちょっとおかしいと思うよ。
0056デフォルトの名無しさん
NGNGまさかこいつの正体はム板中で有名なあの人ですか?www
005743
NGNG0058デフォルトの名無しさん
NGNG> この鸚鵡返しコピペ、脳内事実認定にJava擁護。
このスレで"Java"という単語を出したのは>>45と君だけなのだが、
どちらが「ム板中で有名なあの人」だと思うのですか?
0059Aranskは激怒した
NGNGAranskはプログラミングがわからぬ。Aranskは、メンヘルの腐女子である。
引きこもり、同人誌で自慰して暮して來た。けれどもアナルに対しては、人一倍に敏感であった。
0060デフォルトの名無しさん
NGNG馬鹿の話などどうでもいい。ここは関数型言語スレだ。
キチガイはお引き取り願おう。
0061デフォルトの名無しさん
NGNG,.-'''"-,.-'''"-─ `ー--─'''''''''''i-、,,
.,.-,/ ,.-,/ , !,, \''"7
( ( ,' ノ ヽ-、,,/''ー'''"7
`''| `''| ' ■ ``ー``ー''"
! ! '、 i
'、 '、 `-=''''フ'ー''ヽ、 /ヽ、-─-、,,-'''ヽ
\_ \_/ ヽ--く ヽ--く _,,,..--┴-、 ヽ
``""~ ``"  ̄ \> \>
↑ Aransk 体重110kg
0062デフォルトの名無しさん
NGNG自作自演レスだと思うけど、文意には同意。
wwwって、結局あの人本人でしょ。
今はAなんとかの中の人。
昔はプ逝一とか、Java曹長とか、変なコテ使ってた常駐者。
0063デフォルトの名無しさん
NGNGいつも理系板や脳科学スレで、
午前三時〜四時にキモイレス付けまくってる人。
一説には海外島流し中で、
現地時間の午後ティータイムに、サイコなレス付けまくってるとか。。。 コワー
0064デフォルトの名無しさん
NGNG006564
NGNG関数型言語スレって、Part1から厨房議論の場だったんだけど、
最近の厨房は勘違いしてて、高尚な議論をする場だと思っているらすぃ。
ここって、結局、勘違い厨房が無知無学の醜態を晒す場所なのにねw
0066デフォルトの名無しさん
NGNGつーかお前、何で名前欄に他人のレス番入れてんだ?
詐称はやめろ、糞厨。
0067デフォルトの名無しさん
NGNG1日中監視してる?それとも全部自作自演?
0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNG表示的意味論は数学の概念に対応付けることがその目的で、
操作的意味論は全て(数学を含む)を抽象的な機械の動作で表現する
っていう、まったく反対の方向を向いているっていうことですか?
974 名前: デフォルトの名無しさん [sage] 投稿日: 04/05/04 16:40
>>973
やっとこさ「意味論」の意味が判った、知恵遅れの >>973 は、
もう終わってるスレで今更ナニをしてんの?
続きは新スレでヤレ
↓前スレ>>973どぞー
0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNGき 女 L_ / / ヽ 女 |
ア が / ' ' i 子 マ
リ 許 / / く !? ジ
ま さ l ,ィ/! / /l/!,l /厶,
で れ i ,.lrH‐|'| /‐!-Lハ_ l /-!'|/l /`'メ、_iヽ
だ る l | |_|_|_|/| / /__!__ |/!トi i/-- 、 レ!/ / ,-- レ、⌒Y⌒ヽ
よ の _ゝ|/'/⌒ヽ ヽト、|/ '/ ̄`ヾ 、ヽト、N'/⌒ヾ ,イ ̄`ヾ,ノ!
ね は 「 l ′ 「1 /てヽ′| | | 「L! ' i'ひ} リ
ヽ | ヽ__U, 、ヽ シノ ノ! ! |ヽ_、ソ, ヾシ _ノ _ノ
-┐ ,√ !  ̄ リ l !  ̄  ̄ 7/
レ'⌒ヽ/ ! | 〈 _人__人ノ_ i く //!
人_,、ノL_,iノ! /! ヽ r─‐- 、 「 L_ヽ r─‐- 、 u ノ/
/ / lト、 \ ヽ, -‐┤ ノ キ 了\ ヽ, -‐┤ //
ハ キ { / ヽ,ト、ヽ/!`hノ ) モ |/! 「ヽ, `ー /) _ ‐'
ハ ャ ヽ/ r-、‐' // / |-‐ く | > / / `'//-‐、 /
ハ ハ > /\\// / /ヽ_ ! イ ( / / // / `ァ-‐ '
ハ ハ / /! ヽ レ'/ ノ > ' ∠ -‐  ̄ノヽ /
{ i l ! / フ / -‐ / ̄/〉 〈 \ /!
0073Aransk
NGNG>7〜13
久しぶりに関数型言語らしい理論的な話ではありますまいか?
7が純粋関数型言語、8が副作用付き手続き型言語、10が制約型言語って
感じなんでしょうか?
0074デフォルトの名無しさん
NGNG勘違いくん登場!
0075デフォルトの名無しさん
NGNGなんでそ〜ゆ〜曲解しかできないの?
向いてないね、きみ
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG社会的・感情的に適切を欠く行動
没入的で狭い興味・関心
ほかの活動を受けつけない
固執を繰り返す
固定的で無目的な傾向
決まりや興味・関心の押しつけ
言葉と言語表現の問題
発達の遅れ
形式的、もったいぶった言語表現
理解の悪さ:表面的/暗示的意味の間違った解釈を含む
0078デフォルトの名無しさん
NGNG>>77にそのものズバリな具体例が出てるよ。
メンヘル板に(・∀・)カエレ!!
0079デフォルトの名無しさん
NGNG関数型言語の話題を振れないようなクズは、
二度とこのスレに来るな
0080デフォルトの名無しさん
NGNG.,,// ./` .,ヽ 、'!、 -,..,,゙'-、
.,r'" 、,、 ` | .| ゙'ハ ヽ
.,/、 .'"l゙ .,.._ ,l゙ .ヽJ│ `, 、<i、
丿/ ゙.,_,゙,,,.,`,i、,!" `,,,,,ll,, .""`.♭
,/ " ,i´.,ノ ゾ/,i,,,|,,,゙″ ゚゙゙,,,,,\ ." 'i、
,l゙ .! ` " ,/` ゙( ●)‐ .゙(● )彳 │| クワッ
! 、 |"" _.‐ !、 ゙l i、 |
│ | ,.| (●、●) .| ".l,| ____________
l゙ "" ," ゙l、 ,,,,,,-,、 ,(, l゙.,jリ /
`、 l、タ,i´゙l、 f{++++lレ. ,l゙,l゙,|l゙ < Object Calm!
| l゙ l゙| │ `'''`'″ ,「"".|l゙ \
l゙ェ'." ,.彳 `"〜 、 ,ィ'゙冫,r゙′  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
フ l ゙l | `゙'''―'''` ,l゙.| |,i
..,r" ! .、 |-,"゙l、
″ ``'‐ ! " \`″
0081デフォルトの名無しさん
NGNG0082デフォルトの名無しさん
NGNG初代はメルヘンだったが、今のはどっかの学部生の糞厨房が騙ってるだけだろ。
0083デフォルトの名無しさん
NGNGキチ外ネタは、わざわざ自分でスレ立てたようなので、そこでやりましょう。
http://pc5.2ch.net/test/read.cgi/tech/1083734838/l50
0084デフォルトの名無しさん
NGNGttp://www.geocities.jp/aransk88/link.html
ご存知「2ちゃんねる」(上品で気が弱い方はとても書き込めませんが…ハンドルはAranskとヒーロー勇気です。(^^;)
0085デフォルトの名無しさん
NGNGうざい。ここでやれ。
http://pc5.2ch.net/test/read.cgi/tech/1083734838/l50
0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNG.,,// ./` .,ヽ 、'!、 -,..,,゙'-、
.,r'" 、,、 ` | .| ゙'ハ ヽ
.,/、 .'"l゙ .,.._ ,l゙ .ヽJ│ `, 、<i、
丿/ ゙.,_,゙,,,.,`,i、,!" `,,,,,ll,, .""`.♭
,/ " ,i´.,ノ ゾ/,i,,,|,,,゙″ ゚゙゙,,,,,\ ." 'i、
,l゙ .! ` " ,/` ゙( ●)‐ .゙(● )彳 │| クワッ
! 、 |"" _.‐ !、 ゙l i、 |
│ | ,.| (●、●) .| ".l,| ____________
l゙ "" ," ゙l、 ,,,,,,-,、 ,(, l゙.,jリ /
`、 l、タ,i´゙l、 f{++++lレ. ,l゙,l゙,|l゙ < Aなんとかってひと?
| l゙ l゙| │ `'''`'″ ,「"".|l゙ \
l゙ェ'." ,.彳 `"〜 、 ,ィ'゙冫,r゙′  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
フ l ゙l | `゙'''―'''` ,l゙.| |,i
..,r" ! .、 |-,"゙l、
0088デフォルトの名無しさん
NGNGうざい。
Aranskネタ、基地外ネタ、人格障害レスへの反応は、すべてここでやれ。
http://pc5.2ch.net/test/read.cgi/tech/1083734838/l50
0089デフォルトの名無しさん
NGNG社会的・感情的に適切を欠く行動
没入的で狭い興味・関心
ほかの活動を受けつけない
固執を繰り返す
固定的で無目的な傾向
決まりや興味・関心の押しつけ
言葉と言語表現の問題
発達の遅れ
形式的、もったいぶった言語表現
理解の悪さ:表面的/暗示的意味の間違った解釈を含む
0090デフォルトの名無しさん
NGNG隔離スレで気の済むまでどうぞ
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNG私>>1は、関数型言語Part1の頃から居る住人だということも知らずに、
>>48のような薄っぺらい煽りをしている。
しかも>>48は、会うたび、事ある毎に、サイコな言動を繰り返して、周囲を引かせている。
これこそ、病気と言わずして、なんと呼ぶべきだろう。
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG↓つぎ、毎日が日曜日のサイコくんが、朝10:00頃起きてカキコ予定
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG【面減る】ム板廃人列伝【最古】
http://pc5.2ch.net/test/read.cgi/tech/1083734838/
0098デフォルトの名無しさん
NGNGどうでもいいけどさこのウィルス付きのページ作ったのお前?
ttp:// blog.makuhari.or.jp/sysad/archives/ 000198.html
Aranskでも偽者でもいいんだけどさぁ。
犯罪だよ。
捕まってもしらないよ。
0099デフォルトの名無しさん
NGNGお前の事快く思わない奴らがしつこく、警視庁にメール
おくったら如何なると思う?
俺は知らないよ。
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNGあ〜あ、ついにやっちゃったね♪
前は国家公務員の名前と身分を詐称して、
スレが即刻削除されてたけど、
今度は>>98タイーホ&板削除かなw
ム板のみんなに謝っとけよw
0105デフォルトの名無しさん
NGNG今更、あわててウィルス消しても警視庁にログ提出しておきましから。
0106デフォルトの名無しさん
NGNG大変だな。
0107デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1083734838/
0108Aransk
NGNG>感じなんでしょうか?
この意見そんなに変かねぇ?機能的意味論の範疇を単に
言語仕様によって分けたように見えるが…。^m^
表示的意味論と言えば何故?
Haskellにおける遅延評価、無限リストや関数部分適用、なんかがさぁ。
どうして話題にならないの?こちらの方がはるかに言語学的には
表示的意味論に近接してると思うけどねぇ?
0109デフォルトの名無しさん
NGNG0110Aransk
NGNG誠に遺憾とか言ってたが、あれ関数型言語で著名な
武市先生だよね?
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNG包丁を作った人間に問題がある様だ。
0114デフォルトの名無しさん
NGNG武市先生キター
上司というより研究科長としてコメント求められたのだろうと思う。
社長が社員についてコメントするようなものだと解釈したが…
0115デフォルトの名無しさん
NGNGhttp://wktm.moe-nifty.com/13hz/cat752960/index.html
http://wktm.moe-nifty.com/13hz/2004/04/post_5.html
0116デフォルトの名無しさん
NGNGhttp://wktm.moe-nifty.com/13hz/2004/03/post_25.html
0117デフォルトの名無しさん
NGNG包丁屋には住みにくい世の中になりそうだな。
ところで包丁屋が使った金槌(VisualC++か?)を作った人間にも罪は及ぶのか?
その金槌は包丁だけでなく鉄砲やピッキング用具を作るのにもよく使われているようだが。
0118Aransk
NGNG>VisualC++か?
やっぱ、AlegroLispかなんか関数型言語じゃあWinnyは
ちょっと無理なのかぁ。(-_-;)
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNGというか、関数型言語業界で一番成功したビジネスマンって、何やってる人なんだろう?
やっぱ、APL関連かな(泣笑
0121デフォルトの名無しさん
NGNGその例えだと、まるでその包丁そのものには悪意がないみたい。
その包丁には、作った人の悪意が確実に込められてるわけだし、
第三者が手に入れた時点でほぼ確実に凶器なる様に仕組まれている。
そして他の目的で使う人間は事実上いない。
とくれば、その包丁が罪な物に変わりはないと思うよ。
0122デフォルトの名無しさん
NGNG拳銃所持を基本的権利と考える連中が居るように、それに対する考え方はそれぞれ。
>>118
別に出来ないことはないでしょ、GUIさえあれば。
ライブラリ不足は根性でどうにかなる。
暇なんでnyみたいだけどム板住人向きのファイル共有ソフトつー
のを作ってみるわ。もちろん純粋関数型言語ネイティブな。少しまちなー。(嘘)
0123デフォルトの名無しさん
NGNGだなんてことは言ってないような>作者
つかスレ違い
0124デフォルトの名無しさん
NGNGすでにハーレクィンは以下略な感じだけども。
エクスアナリス?とファンクショナルオブジェクトに分離?
0125Aransk
NGNGつ〜か、アンチ・マイクロソフトの塊のような人ですが、
Lisp、Schemeで人生の価値観が変わった!って
どこかで書いていた。関数型言語って嵌る人は嵌るんですね。
アンチMSが多いのもGNU・Lispのせいかな?
0126デフォルトの名無しさん
NGNGだけだろ。
0127デフォルトの名無しさん
NGNGLispが関数型言語かどうかはさておくとして(私には分かりません)、
あなたの関数型言語の定義を教えてください。
0128デフォルトの名無しさん
NGNG関数型の定義が昔と今とで変わっただけだよ。
0129デフォルトの名無しさん
NGNGでも関数型屋が関数型言語の歴史の話をするときに絶対言うのが
「関数型言語の歴史はLISPから。すなわち手続き型とほぼ同じ長さの歴史がある。」
だという罠
0130デフォルトの名無しさん
NGNGやぁねぇ〜、ヲタの会話って評論家みたいでぇ〜。自分ではナニも出来ないくせに(プ
0131Aransk
NGNG事実です。またIDEにしてもAlegroLispはGUIBuilder
からDB機能までついており他の言語と遜色ありません。
長い歴史と言い、その言語仕様の歪み=実用性の高さ
と言い、他を圧倒しております。(GNULispも含め)
ワタクシFranzから一銭も頂いておりません。
念の為^m^
0132デフォルトの名無しさん
NGNGデヴスは自分のスレに帰れよ
0133デフォルトの名無しさん
NGNG毎日が楽しいです
0134デフォルトの名無しさん
NGNGところが友人の勧めでMLに変えたところ、なんと3ヵ月後ガンが消えてました!
医者もびっくりです。毎朝スッキリ目が覚め、15Kgのダイエットに成功し、
宝くじは3億円当たり、巨乳の彼女もでき、人生が楽しくてしかたありません。
ありがとうML。
(宮城県 酪農家 28才)
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNGやぁねぇ〜、ヲタの会話って痴呆性老人の繰り言みたいでぇ〜。
いつまでたっても同じ事を繰り返し言ってるだけぇ〜、
話が面白くない殿方って、勉強も仕事も恋愛も中途半端って感じぃ〜。
0138デフォルトの名無しさん
NGNG2ちゃんの自称Aranskってチンポ生えてるし、
痴呆入ってるし、なんだかとてもきもい。
0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNG関数型言語系のスレッドでは結構前から叩かれてきたように記憶しているのですが
なぜか最近「ここのAranskは女、別物」説を声高に主張して、腐女子だのチンポだの
連呼する人が突然わいてきましたね。これって何?
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNGホムペ見れば、おねたんて判るだろ。
おまぃの目は節穴でつか?
0143デフォルトの名無しさん
NGNG2ちゃんのは、COBOL運用歴30年もう定年ってな手垢な感じがぷんぷん。
よって、ホムペの中の人と、2ちゃんの中の人は、別物。
0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNG???
あとさ、なんでいつも二回にわけてレスつけるの?
0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNG2chのaranskも同じ人物。
頭おかしいんだからそっとしておいてやれ。
0148デフォルトの名無しさん
NGNG0149Aransk
NGNGCutt社???「楽しいLisp入門」です。
全然楽しくないんですがぁ。(-_-;)
まだ、グレアムのLisp本の方が良かった。
0150デフォルトの名無しさん
NGNGたしか一冊目は、Lisp処理系の本だけど、何を今更みたいな素人じみた内容だたー。
最近は営業考えて、オプソに接近してたみたいだけど、
まだLispにこだわってるのかぁ〜。Lispファソとして恥ずかしいな、
0151デフォルトの名無しさん
NGNGwww.cutt.co.jp/book/4-87783-102-9.html
書名もまともに憶えられないくらい楽しくなかったのですね。
自分は大学生協で見かけたけど、目次をめくって、マクロのマの字も
出てこなかった時点でカス本だと思いました。
0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNG今度から明記してください。
0154デフォルトの名無しさん
NGNG気がするんだが。
0155デフォルトの名無しさん
NGNGあんた妄想癖が激しいな。
実生活だいじょうぶ?
0156デフォルトの名無しさん
NGNG向こうでもこっちでも、何でそんなに手当たり次第必死で噛みついてるんですか?
煽り方がずーっとワンパターンなのは何故ですか?
いちいち口調を変えて名無しで連投し、指摘されると
「ショムニ」を真似してみただけだよ!そんなこともわからないなんてバッカミタイ♪
とか意味不明な開き直りをするのは何故ですか?
>>148は突っ込みに返せなくなっての負け犬の遠吠えですか?
0157Aransk
NGNG正直ワタクシも最初はLISPやSchemeのマクロに感激いたしました。
でも、どうなんでしょう?
C++のオペレーター・オーバーロードでも間違いやすい。
文法まで変更できる能力って?
極端な話、同一言語であるアイデンティティーそのものまで
変更できるってことですよね?
一人で開発するのは良いけど、多人数になった場合に
マクロの徹底なんかどうしておられるのでしょうか?
0158デフォルトの名無しさん
NGNG思います。なんにもできない(開発しない)のに道具ばかり選んでても意味
ないのでは。最近は Lisp に御執心のようですが ML や Haskell は結局
使いこなせなかったということですか?
0159デフォルトの名無しさん
NGNGその場で問題に適した言語を作る
ぐらいの勢いで使うものだと
思うのだが。
0160デフォルトの名無しさん
NGNGあっちのスレもねw
0161Aransk
NGNG>ML や Haskell は結局使いこなせなかったということですか?
仰る通りです。結局、言語仕様を読み、ちょこっと試用した
だけで終わってしまいましたぁ。^m^
>159
>その場で問題に適した言語を作る
お差支えなければ、そのご自分でお作りになった
「その場での問題に適した言語」の一端でも
ご披露頂けないでしょうかぁ?(*^^)v
0162デフォルトの名無しさん
NGNG構ってチャンにエサやるな。
0163Aransk
NGNG>Aransk様, TXL ttp://www.txl.ca/ の使用レポートおながいします。
向こうのスレはいくらなんでも、「あの顔だけ」はどうしても
許せない!って泣くメンバーがおりまして…。
今のところお出入り禁止命令が…。
全く似てないのか?それとも…似過ぎているのか?(^。^)y-.。o○
そこで代わりに、こっちでご回答を致します。
Queen's University, Kingston, CanadaこれだけでAransk様は
至極お気に入りで御座います。(*^^)v
ただ、define 〜end define構文がどうしても美的センスに
合わないようで…(^_^;)
0164Aransk
NGNGマクロ定義を連想させない?(^_^;)
0165デフォルトの名無しさん
NGNG嫌な気持ち。
0166Aransk
NGNGVBよりは、Parsing機能は高そうですよ。(*^_^*)
0167デフォルトの名無しさん
NGNG>これは、C言語が、関数が集まって形作られる言語であることに由来しています。
ttp://homepage3.nifty.com/mmgames/c_guide/01-01.html
0168デフォルトの名無しさん
NGNG>167
お〜 知らんかったよ
「 C言語の特徴を説明する上で、よく「関数型言語」という言葉が用いられます」
Cはずいぶん書いたけど C は使ったことないしな
main関数なんて書いたこともない
0169デフォルトの名無しさん
NGNGmakeはちょっとあれなので、他にいいものがあれば
参考にしたいです。
0170デフォルトの名無しさん
NGNGttp://spa.jssst.or.jp/2003/program/papers/03007.pdf
0171デフォルトの名無しさん
NGNGHaskell.netっての試したけどC#から呼び出すのはうまくいかなかった。
逆はかなり簡単だけど。
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNG時間がなくて真面目に読んでなかったけど、
これなかなか面白いかも。Perlで書きなおしてみようかな。
0174デフォルトの名無しさん
NGNG394は俺じゃないけど、helloworldとか足し算とかどうやるのか教えてクレクレ。
0175デフォルトの名無しさん
NGNGて感じなのか? s とか k とかが乱舞してるね。すげ。
全然読んでないけど、真ん中らへんに helloworld っぽいのがあるし、足し算
もそのちょっと下にあるね。チャーチ数使うのかよ。
The function <add> which adds two Church integers is ^m`$m<inc>, i.e. ``si`k`s``s`ksk
だそうだ。
0176うーん
NGNGぜんぜんわかんねえや。
0177デフォルトの名無しさん
NGNG例えば、「お風呂を沸かす」を関数モデルで表現すると、どうなるんでしょうか。
わたしの脳みそでは、
1. 風呂に水を張る
2. 湯沸かし器を点火する
3. いい湯加減になるまで沸かす
のようにしか考えられませんが、これって手続き的ですよね。
0178デフォルトの名無しさん
NGNGいい湯加減になるまで沸かす(湯沸かし器を点火する(風呂に水を張る))
じゃだめ?
0179177
NGNGどうもです。
関数モデルだと手続き表現は、ただ関数の入れ子が深くなることで表現できる、ってことですね。
この場合、各関数の入力としてお風呂変数(水の高さ、温度、風呂釜の状態)を入れ、それを元に新しいお風呂変数を返す、って感じですか。
いい湯加減になるまで沸かす(湯沸かし器を点火する(風呂に水を張る(お風呂変数)))
→新しいお風呂変数
0180洩れ車@藤四郎
NGNG以下、若干J言語の記述法を用いることをお詫びしますが、できるだけ分りやすくします。
(1)大枠としてはまずこう考えてはどうでしょうか。
h(x) を h(x) =: f(g(x)) と定義することを h =: f @ g と表記すると、
(「=:」は定義を、「@」は関数の合成を意味する。@ は小さい白丸と似たようなもの)
お風呂を沸かす =: いい湯加減になるまで沸かす @ 湯沸かし器に点火する @ 風呂に水を張る
x は「世界」である。「お風呂を沸かす」は、「お風呂が沸いていない世界」に働き掛けて、
「お風呂が沸いた世界」を得るための手続あるいは操作あるいは関数である、と。
つまり、
お風呂が沸いた世界 = お風呂を沸かす(お風呂が沸いていない世界)
(「=」は相同を意味する)
途中経過は、
風呂桶に水を張っただけの世界 = 風呂に水を張る(お風呂が沸いていない世界)
加熱中の世界 = 湯沸かし器に点火する(風呂桶に水を張っただけの世界)
お風呂が沸いた世界 = いい湯加減になるまで沸かす(加熱中の世界)
ってことで。「世界」が大袈裟なら「風呂周りの系」でも可(と言うか適切かも)。
0181デフォルトの名無しさん
NGNG(2)ただですね、「新しいお風呂変数」みたいな動的制御っぽい話になって来ると、
風呂周りの系 =: (0, 20, 0) NB. 初期値の構造体。(初期水量, 初期水温, 初期火力)
水量 =: 0&from NB. 構造体「風呂周りの系」から水量を取り出す関数。
水温 =: 1&from NB. fromはn番号の要素を取り出す2変数関数だが、Currying(projection)
火力 =: 2&from NB. を行う&演算子を用いて具体的な場所を指定済の1変数関数を作った。
風呂に水を張る =: 250&(0 amend) NB. 構造体の0番目の要素を250で置き換える関数。
湯沸かし器に点火する =: 0.1&(2 amend) NB. 火力を0.1で置き換える関数。
いい湯加減になるまで沸かす =: 単位時間沸かし続ける ^: _
(「^: _」は、結果が定常状態になるまで操作を繰り返させる後置演算子です。つまり、
f ^: _(s) は、x=f(x) となるまで f(f(f(...(s)...))) を繰り返し、その時の x を返します)
単位時間沸かし続ける =: ( NB. 実引き数は仮引き数 y. に代入される。
if. 41.5<: 水温(y.) do. y. return. end. NB. 終了条件は中で判定(汚いが)。
y.=. ((水温 + 火力)(y.)) (1 amend) y. NB. 「=.」は局所定義/局所再定義。
NB. ↑構造体の1番目を、構造体の1番目と2番目との和で置き換える手続。
y. return.
)
みたいなやり方がやや関数的と言えるのではないでしょうか。
0182デフォルトの名無しさん
NGNGその順序が得られるように書くしかないわけで、関数的に書くというのはちょっ
と変なんじゃないかなぁ。
個々の関数を副作用なしに書く定義を書いといて、
空の風呂 >>= 水を入れる >>= 点火 >>= 火を止める
とかあたりでは。
0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNG馬鹿
0186177
NGNGありがとうございます、、でも半分も理解できてないような、、ごめん。
最近、関数モデルの言語で、「手続きモデルを適用したほうがすっきりする問題」をうまく扱えるのかなあ、と思っていました。
結局、「順番に実行する」というのは、関数を順番に適用→関数を入れ子にする、で簡単に置き換え可能、と理解しました(でいいですよね?)。
0187デフォルトの名無しさん
NGNG>>= は演算子で、 Monad a => a b -> (b -> a c) -> a c の型を持つ。ちょっ
とわかりづらいけど、初期の値を順に関数に通して結果を得るための演算子だ
と考えてくれていい。
他にも、関数のリストを作って畳み込むことで結果を得るという考え方もある
と思う。ステートが違うだけで同じ型の変数であると考えれば、
風呂 = foldl apply 空風呂 [ 水を入れる, 点火, 火を止める ]
where apply :: a -> (a -> b) -> b
apply x f = f x
とかね。
もちろん、 Haskell にも do 〜 のような述語があるし、
ML 系にも begin 〜 end が(たしか)あるから、手続的に書こうと思えば割と
簡単に書けるよ。
0188177
NGNGあ、ごめんなさい。>>182 で">>="の意味がまったくわからなかったもので。
関数型言語でも、手続き的にしか考えられないものは手続き的に考えるしかない、ってことですか、、
メインが関数モデルで、必要悪で手続きモデルを使う、みたいな。
組み込み屋の戯れ言にお付き合い頂いてありがとう。
少しすっきりしました。
0189187
NGNGのは当然なわけです。関数の定義それ自体で動くわけではないですから。
なので、スタイルとして
1. 各関数の定義を宣言的に書く
2. 最後にそれをごちゃっとまとめる
というステップで書くとよろしくやってくれる、という考え方なんだと思いま
す。
むろん C でも綺麗に書こうとすればそういうスタイルはありだと思いますが、
関数型言語でやった方が圧倒的に書きやすいのです。
0190177
NGNGなるほど、、
私は、関数型言語使う人って、プログラムを全部関数的に構築したいのかなあ、って妙な誤解をしてました。
お話きいてると、その辺は割とあっさりしてる感じですね。
0191デフォルトの名無しさん
NGNG「関数型言語では代入の必要になる場所は少なく,使ったとしても隔離できる」
0192デフォルトの名無しさん
NGNG備わってるだけで。
0193デフォルトの名無しさん
NGNG>使ったとしても隔離できる
「使う場合は隔離しなくてはいけない」だったりするのがイヤン
0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNGHaskellにはIO Actionを始めとしてモナド(特殊なコンテナだね)があり、
Concurrent Cleanには一意型変数があって好き放題いじれる。
もちろん(純粋でない)Schemeにはset!が、*MLには参照型変数がある。
0196デフォルトの名無しさん
NGNGモナドはIOなどを副作用なく扱うためのものだろ?
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNGモナドは副作用を伴わないが代入あるということ?
0199デフォルトの名無しさん
NGNGでも実質的に破壊的代入だからミスリーディングだということ?
0200デフォルトの名無しさん
NGNGとかの話にはもう飽きた。
関数型言語と言えど魔法の弾丸ではない。それだけ。
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNGいわれたときに、適当にハッシュ表とカウンタ用意
して++とかしますが、これを関数型言語ではどんな
感じでやるのかな?
0203デフォルトの名無しさん
NGNG関数的に書くんなら、連想配列を使って、
1. 要素を発見したら、個数を1つ増やした新しいセルを追加し、古いものを削除
2. なければ新しい要素を追加
とかじゃないか。
結局、やることはそう変わらないはず。ただし、++のように破壊的にやるので
はなく、古いものを削除して新しいものを追加するというポリシを取る。
もっとも OCaml の場合には、標準ライブラリにハッシュテーブルがあるから、
これを使って破壊的にカウントすることになるだろうね。
0204デフォルトの名無しさん
NGNG見えますが、関数型といってもそんなもんなんすか。
0205デフォルトの名無しさん
NGNGcount x nil = すべて0
count x y::ys = if y ∈ x then (count x ys)のyに対応する単語の出現数を1増やしたもの。 else count x ys
0206デフォルトの名無しさん
NGNGたとえば次のように書くと、
let alist = (word, count+1) :: (List.filter (fun (w, c) -> w <> word) alist)
これは破壊的代入ではないよ。元の alist は破壊されなくて、そこの部分を
書き換えたリストを *新しく* 作る。だから、置き換える前のリストや、消し
たセルを参照しているものがあっても副作用は起きない。
ただしこれ、実際にやると新しくリストをコピーすることになるので、著しく
効率が悪いはず。
Concurrent Clean だと、古い方のものが以後使われることがない(他で参照さ
れていない)時には自動的に破壊的代入になるという話を聞いたことがあるん
だけど、もしそうなら同じアルゴリズムで効率的に動作できるのかも。
そういうわけで、こんな感じかな(OCamlのコードです)。
let rec count x = function
| [] -> x
| y::ys ->
try
let w, c = List.assoc y x in
let x' = (w, c+1) :: (List.filter (fun (w', c') -> w <> w') x) in
count x' ys
with Not_found ->
count ((y, 1) :: x) ys
try - with で囲んでるから末尾再帰じゃないので、さらに効率的ではないけ
どね。
0207206
NGNGlet w, c = List.assoc y x in
は、
let w, c = y, List.assoc y x in
とでも読み換えてくれ。
0208デフォルトの名無しさん
NGNG十分小さければサーチ時間は一定とみなせると強弁できるかもしれない
けれども、組み換えによるメモリの消費や割り当ての手間はけっこう
馬鹿にならないような気がする。貧乏性ですかね?
0209デフォルトの名無しさん
NGNGプログラムに関するいろんな公理を教えておく必要があるが、デモを見た限り結構賢そう。
どこまでできるのかは知らないけど。
0210デフォルトの名無しさん
NGNGあとは中で破壊的更新を使いつつも「外側から見ると参照透明な」関数とか.
Haskell標準の配列型
ttp://www.sampou.org/haskell/tutorial-j/arrays.html
ttp://www.sampou.org/haskell/report-revised-j/array.html
Concurrent Clean標準の配列型
ttp://sky.zero.ad.jp/~zaa54437/programming/clean/LanguageReport21/Chap4.html#sc14
純粋関数型言語における「配列」の実現
ttp://www.nerimadors.or.jp/~kando/TITECH/FuncArray/FuncArrayImpl.html
...なんかを眺めていたらなかなか面白かった.
>>209
ソフトウェア自動生産特論
ttp://www.futamura.info.waseda.ac.jp/~futamura/lecture/Automation/index.html
とか?
0211デフォルトの名無しさん
NGNG最初に書いたように、 OCaml にはハッシュテーブルがあるので、普通にやる
場合にはこれを使うのが普通でしょう。ただ、あまり関数的ではないアルゴリ
ズムになります(下記)。
ちなみに OCaml にも配列はあり、破壊的な代入が可能です。理論の詳しい話
は知りませんが……。
let number2 lst =
let rec main tbl = function
| [] -> tbl
| w::ws ->
if Hashtbl.mem tbl w then
let c = Hashtbl.find tbl w in
Hashtbl.replace tbl w (c+1)
else
Hashtbl.add w 1;
number2 tbl ws
in
main (Hashtbl.create 100) lst
;;
0212デフォルトの名無しさん
NGNG配列であれhashであれ通常のループ+破壊書き換えで
動いてるプログラムなら見かけ上配列またはhashを
全コピー+1要素更新しながら末尾再帰するような
プログラムに書き換えられて、それは実はループ変数
を末尾再帰のパラメタにするのと似たような手で
破壊書き換えに最適化できる、という感じなのかな。
なんか一回りしてるようだが面白い(笑)
0213洩れ車@J算譜工房
NGNG(JayLanguage)の開発者、ケン(ケネス)・アイバーソン博士が亡くなりました。黙祷。
J言語のメーリングリストからの引用です:
Ken Iverson passed away Tuesday evening, October 19th at the age of 83. Ken was
at his computer Saturday afternoon working on a new J lab when he had a stroke.
Three days later he died quietly with his wife Jean by his side, along with
other family members. Ken had a wonderful and memorable life. He enjoyed it
fully and he freely shared his joy with so many others.
Many people have contributed to the start, growth, and evolution of J. But Ken's
role was central and inspirational. J exists because of Ken and we will always
remember that.
The J Forum was a particular joy for Ken. He was an avid reader and was amazed
and pleased with the civility.
In his last days Ken expressed confidence that the J seeds he had planted had
taken root and was satisfied that the steady and healthy growth would continue.
Ken has passed a torch and it is now up to us.
Ken's immediate family is having a private memorial service. In lieu of flowers,
please make a memorial donation to the charity of your choosing or to the
Academy of Life Long Learning (www.allto.ca). Ken's life was based on the
importance of education and teaching and in recent years, with Jean's serious
involvement, the Academy was an important part of Ken's wider life outside of J.
/Eric Iverson
0214デフォルトの名無しさん
NGNGLISPの生みの親、Jマッカーシー氏はまだ生きてる、よね?
0215デフォルトの名無しさん
NGNG元気にサイトの更新なさったりしてます。
ttp://www-formal.stanford.edu/jmc/
0216デフォルトの名無しさん
NGNGC, Perl, Ruby, Java も一通り触った事はあって、
オブジェクト指向開発とかは好きなんですけど、
関数型言語っていまだに理解できないんです。
ソースの字面を見ても意味が分からないし、
概念もさっぱり分からない。
logさえ分からないヘタレ高卒で数学の素養が
全くない漏れでも理解できる方法ってありませんか?
0217デフォルトの名無しさん
NGNGスレにでてるコードがそのとおり動くか確かめてみろ。
そのコードの一部を切り取ってみて、どういう動作をするのか調べて確かめてみろ。
部分部分をどういうルールや関数でつなげてるか調べてみろ。
そうすれば理解できるようになる。
0218デフォルトの名無しさん
NGNG昔オライリーの分厚いEmacs Lisp本を買ったんですけど
Emacsの変態的なUIについて行けずにお蔵入りになりました。。
0219デフォルトの名無しさん
NGNGEmacs Lispリファレンスマニュアルなら一通り読んで全体像をつかんだ後、つまみ食いすればいい。
0220デフォルトの名無しさん
NGNGEmacs Lispなどという中途半端なものではなく、
Haskellをやりたまえ。
純粋関数型言語なので「これぞ関数型」という書き方ができるようになる。
全く異質なプログラミングパラダイムを味わえるぞ。
http://pc5.2ch.net/test/read.cgi/tech/1076418993/
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG>>216
> C, Perl, Ruby, Java も一通り触った事はあって、
これだと高階関数やクロージャも使いこなせてないだろう。
Haskellで彼には新しいだろうこと
* 遅延評価、代入のないプログラミング
* Type-driven programming
* コンビネータ(Lispのマクロに相当するが関数)による構文抽象と言語内言語
* モナドによるコントロールフローの抽象化
* Existential type、type class、といった高度な型システムの"創造的な"利用
(オブジェクトの代替、オブジェクト自体やグローバル変数の実装、コンテナ、型システム内での計算...)
0223221
NGNG0224デフォルトの名無しさん
NGNG>Type-drivenprogramming
これってどういう事?
Java を指して Class-driven programming って言っちゃうような感じ?
0225デフォルトの名無しさん
NGNGMLやSchemeがお手軽だよ
0226デフォルトの名無しさん
NGNG知ってる。
>>224
まず型から考えて、型が合うようにプログラミングすれば
アルゴリズムがついてくるような感じ。
0227デフォルトの名無しさん
NGNGそもそも構文解析プログラムなぞ作らなくても、MLなら構文木を
表す型を定義すればいいし、Schemeなら適当にS式にmappingする
やり方を決めてそれで書けばいいと思うのだが...
0228216● ◆SKjzm2Ah6.
NGNG今段ボール箱から取り出して見たらオライリーじゃなくて
ASCIIの「Emacs Lisp リファレンスマニュアル」でした。。
とりあえず今起きたので、>>220のHaskellスレの>>1に
載ってたどっかの大学の日本語サイトを見て勉強してます。
>>222
> 高階関数やクロージャも使いこなせてないだろう
これさえさっぱり分かりませんし、
> Haskellで彼には新しいだろうこと
は当然全部意味不明です。。
これから頑張ってみます。
http://pc5.2ch.net/test/read.cgi/prog/1096545948/
で「漏れって天才!」とかほざいていたんですが、
自信喪失しました。ごめんなさい。
0229216● ◆SKjzm2Ah6.
NGNGあ、なんかウェブサイトをちょっと読んでて思ったんですけど、
ひょっとしてこうかい(←なぜか変換できない)関数って
C でいう関数ポインタとか Rubyでいう proc (lambda) を
受け取るような関数のこと??
C++ の標準テンプレートでも似たようなことしてるかな。
全然的はずれだったらハズいですけど、、
0230216● ◆SKjzm2Ah6.
NGNGあ、「クロージャ」で Google 検索したら
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?Closures
が出てきました。Ruby では普通に使う手法ですね。
業務じゃ全く使ってませんけど。(C++ じゃ使えない?)
0231デフォルトの名無しさん
NGNG0232216● ◆SKjzm2Ah6.
NGNGほんとだ、それで変換できました。
漢字の読み方も知らなくって本当に恥ずかしいです。
うっかり人前で「こうかいかんすう」なんて読んでしまう前に
正しい読み方を教えてもらってよかったです。
ありがとうございました!
0233デフォルトの名無しさん
NGNGそうなんだけど、もっといろんな使いかたがあるし、よく使う。
関数型になれると、他の言語でも同じ様な書き方ができることに
気づいたり、あるいは、できないことに気づいたりするよ。
C++は関数オブジェクトを駆使するといろいろできるけど、
ポリモーフィズムが無理だし、第一凄く面倒だからやらないね。
>>232「こうかいかんすう」であってるよ(w。君のIMEの辞書が良くないだけ。
0234デフォルトの名無しさん
NGNG大昔、国語の朗読で
「先ずもって」を「さきづもって」と読んだ奴思い出したさげ
0235デフォルトの名無しさん
NGNGたかしな関数ワロタww
俺が教わった数学の先生に高階(たかしな)先生という人がいたんだよ。
彼が一大発見して関数に名前がついたら区別がつかんようになるなあ。
0236デフォルトの名無しさん
NGNGあなたの経験からすればそんなに入門は困難じゃない.
Ruby 使ったことがあるなら Array#map とか関数型の影響を受けた機能を知ってるハズ
(そうとは知らずに使ってたんだろうけど).
あと Ruby の Proc はまさに(関数型言語で言う)クロージャの特別な場合.
よく使う用例に特化してる分ちょっと弱い.
Cの関数ポインタとクロージャの決定的な違い,
すなわち「静的スコープ」とか「環境」とかについてゆっくり勉強するといい.
実装を解説してる文書を探すのもといいと思う.
型システムは,あんまり便利で驚くことうけあい.
特にパラメータ型多相(C++のテンプレートと似てる)と
OOPで言う「継承によるポリモルフィズム(部分型)」をうまく統合してるのが特徴.
Javaとか「なぜこんなに表現力がしょぼい?」って気がしてくる(最近変わりつつあるけど).
ただ,ヴァリアント型は構文のせいでよくこんがらがりやすいけどね...
(コンストラクタなのか型の名前なのか,あとtypeとdata)
Haskellはかなりラディカルな言語なんでCとかとはギャップが大きいけど,面白いことは色々あるよ.
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG自分でコードしていきながら概念を掴んでいく方がいいと思うよ。で、大雑把
にわかってから、その辺をキーワードに調べていくといいと思う。
# っていう意味で「ゆっくり勉強」って書いたんだったらスマソ
漏れは Ruby を書いても割と関数型スタイルで書こうとしちゃうんだが、けっ
こう書けるし、 Ruby 知ってるなら抵抗感はそこまでないと思うな。
型について補足すると、このテの関数型言語には型推論という機能があって、
最低限自分が書きたいところだけ「これはこの型」っていうのを提示すれば後
はオーケー(別に型を敢えて指定する必要はない)、っていうところも、プログ
ラマの負担軽減って意味では重要だと思う。
Haskell はラディカルすぎるんで挫折するかもしれないから、 ML 系言語から
攻めて行った方がいいかと思う一方、あれくらいラディカルじゃないと関数型
言語の面白さが全部は伝わらないのかもという気もしていて、どっちを勧める
かは正直、悩むな。
漏れは京大の五十嵐先生の OCaml の講義録から興味を持ったクチなので、
Haskell がなんだかわからなかったら OCaml を勧めとくよ。モナドとか型ク
ラスとかいった小難しそうな(新しげな)のはなんにもない。そんかわり関数型
言語としては綺麗じゃない。
0239デフォルトの名無しさん
NGNGperlはmy変数(Cのローカル変数と同じスコープを持つ変数)を
無名関数の定義の時点で保存できる。でもグローバル変数は
当然上書きされてしまいます。これはクロージャというには
中途半端な代物なんでしょうか?
perl -e '&{&{sub{my $v=1;$f=sub{print $v};$v=2;$f}}}'
しかも無名関数を定義した後にも、それを上書き出来ちゃうし。
0240デフォルトの名無しさん
NGNG0241/= 236
NGNGそれらの性質は問題ない。
グローバル変数が上書きされたときにクロージャ内のものまで
かわるのは普通だし(Schemeでもそう)、local変数がどうなるのかは意味付けの問題。
Haskellではそもそも上書きされたりしないからそういうことは考えなくていい。
# Perlでのlocal変数に当たるimplicit parameterというものがあって
# それを使うと上書きされたような挙動が実現できる。
0242デフォルトの名無しさん
NGNGそんなときはConcurrent Clean
0243デフォルトの名無しさん
NGNG> Ruby 使ったことがあるなら Array#map とか関数型の影響を受けた機能を知ってるハズ
SmalltalkのCollection#collect:の影響とも言われているな
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNGhttp://boo.codehaus.org/Home
(http://www.rubyist.net/~matz/20041126.htmlより)
> 新言語。
> * Python文法
> * 静的型
> * 型推論
> * CLI上で動作
0246デフォルトの名無しさん
NGNG0247Aransk
NGNGttp://www.iolanguage.com/Downloads/
IoDesktop-2004-12-06 vm + server addons + ui addons 20M
日本語ドキュメント:
ttp://f21.aaa.livedoor.jp/~kizz/prog/io/Docs_ja.html
純粋に関数型かどうかは別にして一応、
Io is small prototype-based programming language.
The ideas in Io are mostly inspired by Smalltalk
(all values are objects), Self, NewtonScript and Act1
(prototype-based differential inheritance, actors and
futures for concurrency), LISP (code is a runtime
inspectable/modifiable tree) and Lua (small, embeddable).
となっています。
ぱっと見、良さ気な言語に思えますが、
少なくともbooよりは…。
0248Aransk
NGNG好きな言葉だけでも必見の価値があると思う。
ttp://www.dekorte.com/Quotes.html
良い言語を作りそうな感じがするでしょう?
0249デフォルトの名無しさん
NGNG面白いと思うけどこのスレで扱う内容か?
それにしても非常に検索しづらそうな名前だと思うが……。
0250デフォルトの名無しさん
NGNG0251Aransk
NGNGIoは一応Lispに影響されたとあります。また、イオってギリシャ語で
月を意味するそうです。Lunaに影響されたとあります。
では,関数型言語の総本山の話題です。
ttp://www.lisperati.com/
見られました?
GNU CLispはお奨めと書いてあります。
ttp://ciapek.uci.agh.edu.pl/~kwlodarc/VisualCLisp/en.htm
IDEツールもあるようです。
and of course it has a few bugs.
If you find one, please, let me know
(a fewとoneに味がある…)
and if you've got any informations about zionist
conspiracies, please, let me know
and if you've got any idea about how to solve
the middle-east conflict or war in Iraq, please, let me know
in other cases, please, don't let me know
VCLisp作者のこのコメントは笑えませんか?
>>250
don't let me know ってか?(藁)
0252デフォルトの名無しさん
NGNG抽象化が簡単にできるとこ?
クロージャ(無名関数でも可)がつくれるとこ?
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNG0255Aransk
NGNGマイナー感が適度にあるところ
言語エリート意識をくすぐるところ
仕事で使う必要がないところ
言語コニュニティー構成員の
世間的知名度の低いところ。
雑誌の記事や本には、ならない。
売れない、儲からない。
それでも関数型言語に拘るのは
馬鹿とまでは言いませんが
結構かすっている人々が多いと
思われ。PrologやAPLなんかよりは
まだましですが。今や過去の遺物と
なりつつあるCOBOLやCと比べても
かなり実用性には欠ける。
その点でRubyなんかのファンと
似た心情と考えております。
タイガーズファンとも…。
0256デフォルトの名無しさん
NGNG他の言語でも応用が効くんだよね。
0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNG関数型でもないし目指してるとこが違うだろ
つーか↓過疎スレなんだから盛り上げてやれよw
プロトタイプベース・オブジェクト指向
http://pc5.2ch.net/test/read.cgi/tech/1070886635/
0259デフォルトの名無しさん
NGNGつーことは、
他の言語にない概念を関数型言語から学べる、というのが一番嬉しい
ってことか。
0260Aransk
NGNGマイナー言語に嵌るタイプの人々を観察しながら
あぁだぁ、こうだぁ、と評論家的に語るのが
一番嬉しいってこと。これは関数型言語に
限らない。
つまりインドとか中国はまだそんな余裕がない。
JavaやC++なんかの稼げる言語で稼ぐのに
必死であり、マイナー言語なんかをトロトロ
やってる暇がないのです。
関数型言語は特に実用性に欠けるでしょう?
そこが成熟社会における魅力でもある訳です。
やっても世間的に意味のないことが
オタク心理をくすぐる訳なんです。
いってみれば閑散とした田舎の鈍行列車
ですって。
ttp://www.lisperati.com/
これなんかまさにLispの特徴を
うまく表現していると思うけどねぇ。
「だから、どうなの?」って言われると
困るところも含めて…。
0261デフォルトの名無しさん
NGNG学際的な視点からの意見は?
0262デフォルトの名無しさん
NGNGオブジェクトモデルは、世界をばらばらな部品に分割することで、それを近似する。
関数型モデルはオブジェクト境界に沿っての部品化はしない。オブジェクトモデルは
「オブジェクト」の非共有の状態が、共有の状態よりずっと大きい場合に有用である。
オブジェクトの視点が失敗する場所の例は、量子力学で、そこでは物を個々の粒子と
考えると矛盾と混乱に陥る。オブジェクトの視点と関数的視点の統合は、プログラ
ミングより基本的認識論に見るべきものがある。
この「基本的認識論」と呼ばれるものについて知りたいのですが、何か参考になる
文献など、ご存知でしたら教えてください。
0263デフォルトの名無しさん
NGNG認識論の基本ということであれば、観念論的立場だが、ヘーゲルを
読むのがいいと思う。ただし「精神現象学」から入るのは止めた方が無難。
0264Aransk
NGNG「ケインズの哲学」伊藤邦武著 岩波書店
お奨めです。いきなりヘーゲルはきついと思われます。
ご承知の通り、ケインズは本来経済学者です。
従って本書中にある確率論はとっつき易い。
すくなくともヘーゲルより
「オブジェクトの視点と関数的視点の統合は、プログラ
ミングより基本的認識論に見るべきものがある。」
的な視点と近いものがあります。
0265Aransk
NGNGttp://www.shiro.dreamhost.com/scheme/trans/power-j.html
簡潔さは力なり---Succinctness is Power---
Paul Graham, May 2002.
Quote:
Arcで階乗を高階関数で次のように書きたくなければ:
(rec zero 1 * 1-)
つぎのような再帰的な表記を使っても良い:
(rfn fact (x) (if (zero x) 1 (* x (fact (1- x)))))
私は例をすぐに思い付けないけれど、言語が簡潔すぎることが
可能かどうかという問いには興味がある。ごちゃごちゃ固まって
理解不能なようにしかコードを書けないような言語なんて
あるだろうか。誰か例を思い付いたら、是非見てみたい。
Unquote:
ttp://sonic64.hp.infoseek.co.jp/2003-06-04.html
Perl one liner 集 perl 1行野郎
Quote:
ファイルを文字単位ですべてひっくり返します
perl -0777e 'print scalar reverse <>' f1 f2 f3 ...
Unquote:
(rec zero 1 * 1-)
と
perl -0777e 'print scalar reverse <>' f1 f2 f3 ...
と
簡潔性において上が勝るが可読性では下が勝る。
また上の例など返って間違う可能性が高い。
「さこそ」とぞおおせいでたまいけり。
誰が言っているのか、何を言いたいのか
つぶやいてみたかっただけなのか、
さっぱり分からん、状況に極めて
類似してないだろうか?
0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNG哲学や物理学のようなものではなくて、認知科学や実験心理学のような
ところの研究成果で、素人にも分かりやすく整理されている何かおもしろい
ものはないかな、と勝手に期待してました。
ヘーゲルは大昔に「論理学」を読んだことがありますが、難しくてさっぱり
分りませんでした。
>>264
>的な視点と近いものがあります。
どう近いんでしょうか?私の知りたいのはアクロバットな認識というよりも、
全ての人が理解しうるようなもっとプリミティブなものです。
というわけで、この話題スレ違いだし電波臭いので終わり、です。
0268Aransk
NGNGイギリス経験論の流れをくむラッセルーケインズ
なんかの方がプログラミングには近いと思うのです。
また、ケインズは本職が経済学ですから
哲学の専門家よりは用語は分かりやすく
基本的なところから入っています。
さらにご承知のとおりケインズは
イギリスの大蔵省に長く勤めた実務家です
から、論理に浮いたところが少ない。
そのケインズの哲学を日本人が解説して
いるいわば新書版感覚で読める本と考えて
推薦しただけで他意はありません。
オブジェクト指向も関数指向も命題の
切り取り方にある訳です。従って
ケインズの説くA−>B命題に帰納される
際の蓋然性の束という概念があるいは
「オブジェクトの視点と関数的視点の統合」
という観点になんらかの寄与をするかも
しれないなと考えている次第です。
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNG0272Aransk
NGNG流動的で不確実な世界を
モデル化するための視点と
方法における蓋然性の束と
考えて下さい。写像そのものに
既に蓋然性と選択性が入りこんで
いるような。
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
05/01/17 02:54:010275デフォルトの名無しさん
05/01/17 05:12:09これはどういう意味ですか?興味あるので詳しく教えてください。
イジワルではありません。
0276Aransk
05/01/17 17:28:17申し訳ないが「蓋然性の束」を概念を一から
説明するとなると結構大変なんです。
そこでまず以前にご紹介した「ケインズの哲学」の
該当部分をお読み頂くか、宮台先生のBlogにおける
社会学入門の7回以降辺りを読んで頂けないでしょうか?
http://www.miyadai.com/?blogid=1&catid=7&page=4
凡その概念を把握されてから、それをプログラミング
パラダイムにどう応用するのか一緒に考えて
みようじゃありませんか?
0277Aransk
05/01/18 18:32:30ここである程度「蓋然性の束」の概念を
ご理解頂ければ:
ttp://www.nanoelectronics.jp/kaitai/quantumcom/2.htm
「量子力学から確実に分かる唯一の情報は、確率だけということになる。」
このプログラミングパラダイムへの道が開けるのでは
ないでしょうか?
申し訳ありませんが、これ以上は企業秘密と言う事で
ご勘弁下さい。
0278デフォルトの名無しさん
05/01/19 00:07:36ということはよくわかった。
0279Aransk
05/01/20 13:52:53分かってくれた?
0280デフォルトの名無しさん
05/01/20 18:38:23嫌がらせか?
0281デフォルトの名無しさん
05/01/21 03:39:07言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
霊長類研究所
0282デフォルトの名無しさん
05/01/21 03:44:59矛盾。
0283デフォルトの名無しさん
05/01/22 01:35:36自分の文章を読むのもしんどそうですね
0284デフォルトの名無しさん
05/01/23 00:50:54専用ブラウザで見ようぜ。
0285デフォルトの名無しさん
05/01/23 05:43:470286デフォルトの名無しさん
05/02/01 17:16:45UNICODEやDLも使えるそうな、
案外MLの本命になるかもね?
ttp://research.microsoft.com/projects/ilx/fsharp.aspx
1.0リリース直前!MLはF#、ScriptはGroovyで決まりか?(笑)
0287デフォルトの名無しさん
05/02/01 17:18:48意味わかんねえ
0288デフォルトの名無しさん
05/02/01 21:59:58本人ですか?
0289デフォルトの名無しさん
05/02/01 22:25:26アルナスク?だれですか
0290デフォルトの名無しさん
05/02/02 00:24:550291Aransk
05/02/02 15:08:44なんで分かるの?正しくは「Aransk」だかんね。
>>287
>なんでそこでGroovy?意味わかんねえ
寄らば大樹の陰です。世の中の常識では?(笑)
0292デフォルトの名無しさん
05/02/02 15:26:08超準関数型言語Aransk
http://pc5.2ch.net/test/read.cgi/tech/1082176723/
0293Aransk
05/02/03 15:26:38気付いたら関数型言語はF#しか残ってないかも?
0294デフォルトの名無しさん
05/02/03 15:29:36超準関数型言語Aransk
http://pc5.2ch.net/test/read.cgi/tech/1082176723/
0296デフォルトの名無しさん
05/02/03 23:38:37ああ?
0297デフォルトの名無しさん
2005/04/10(日) 15:39:32A . I .
LLLLLLLLLLLLLLLLLLLLLLLLLLL
0298デフォルトの名無しさん
2005/04/21(木) 04:36:46そりゃケインズの確率論(フェロー応募論文のやつだよね)はほとんど哲学だからな。
数学とはいえないだろう。そういう意味では難解ともいえるな。
0299デフォルトの名無しさん
2005/04/29(金) 08:40:25趣味で関数型言語を勉強してみたいと思っています。ML系、Haskellの
どちらかから始めて、次にLispに進もうと思っていますが、前2者のどちら
がお薦めでしょうか?
0300デフォルトの名無しさん
2005/04/29(金) 10:03:11ただ、言語として綺麗なのは Haskell。また、 ML は「純粋な」関数型言語で
はないので、 Haskell の方を勧める。
つか、挙げてる中では Lisp 系が一番楽だと思う。本もいっぱい出てるし。
0301デフォルトの名無しさん
2005/04/29(金) 12:03:48HaskellよりMLの方が馴染みやすいと思うよ。
MLよりもLispの方が馴染みやすいと思うよ。
でも、何の為にそれらの言語を覚えるの?
確かに、違う言語のパラダイムを見ることはプログラミングテクニックの向上にはなるけれど。
0302299
2005/05/01(日) 23:43:20知ったからです。ただ、lispは括弧が多いし何となく古くさい感じがするので
どうせなら新しい言語をと思ったのです。
0303デフォルトの名無しさん
2005/05/02(月) 03:56:28興味のある対象で使われてるものから手をつければいいのに。
0304デフォルトの名無しさん
2005/05/03(火) 07:02:37> 何となく古くさい感じがするので
> 何となく古くさい感じがするので
> 何となく古くさい感じがするので
> 何となく古くさい感じがするので
0305デフォルトの名無しさん
2005/05/03(火) 07:53:47古臭いと言われちゃうとなあ……ええ、古いし括弧だらけですよ?
さておき、まずこちら辺りを眺めてみては。
独習 Scheme 三週間
ttp://www.sampou.org/scheme/t-y-scheme/t-y-scheme.html
やさしい Haskell 入門
ttp://www.sampou.org/haskell/tutorial-j/index.html
まあ、他の方が言っているように Lisp 系が一番入り易くはあるでしょう。
善かれ悪しかれ何でもありなので、どんなスタイルでもとりあえず書けるから。
Lisp 系で手続き型っぽい書き方から関数型っぽい書き方に
頭を馴らしていくのが障壁は低めじゃないかなーと。
0306デフォルトの名無しさん
2005/05/04(水) 18:45:21Lispを侮ってはいけない。
確かに関数型言語の思想からはみ出している部分はあるが、
それでも関数型言語の原型であり到達点であることには疑いがない。
若干宗教的偏執はあるが、
http://www.shiro.dreamhost.com/scheme/trans/icad-j.html
が面白い。下記は引用。
>Java、Perl、Pythonと順に見て来ると、おもしろいパターンに気づくだろう。
>少なくともあなたがLispハッカーであればきっと気づくはずだ。
>各言語は次第にLispに近付いてきている。
>PythonはLispハッカーの多くが間違いだと思っている機能さえコピーしている。
>簡単なLispプログラムなら、ほぼ一行毎にPythonに変換することすら可能だろう。
>2002年の今になって、プログラミング言語はようやく1958年に追い付こうとしている。
0307デフォルトの名無しさん
2005/05/04(水) 21:10:07意味もなく考えすぎてしまうようになった。これはいいことなのか
悪いことなのか・・・
0308デフォルトの名無しさん
2005/05/08(日) 13:54:06みたいなこと書いてあったからいいんじゃね。
0309デフォルトの名無しさん
2005/05/24(火) 11:25:14どーせ勉強すんなら普段とは違った性質がある言語がイイと思って。
0310デフォルトの名無しさん
2005/05/24(火) 18:02:46Pythonは違う
0311デフォルトの名無しさん
2005/05/24(火) 20:00:300312デフォルトの名無しさん
2005/05/24(火) 20:56:16……………まあ、いいや。
0313デフォルトの名無しさん
2005/05/25(水) 01:19:04> Pythonはリストの内包表記といくつかの遅延評価メカニズムを備えているから
ttp://www.shiro.dreamhost.com/scheme/trans/IsPythonLisp-j.html
0314デフォルトの名無しさん
2005/05/25(水) 01:34:15なるわけではないし
0315デフォルトの名無しさん
2005/05/25(水) 02:05:56根拠を挙げるならPythonの遅延評価に関る機能を挙げなさいよ。
「備えている」てだけの発言を引いたって意味ないよ。
0316309 = 313
2005/05/25(水) 03:41:06「遅延評価メカニズムを備えている」って書いてあったから、そーなのかなと思ったでつ。
不勉強で申し訳ないでつ。
0317デフォルトの名無しさん
2005/05/25(水) 07:33:050318デフォルトの名無しさん
2005/05/25(水) 15:26:48f : (int -> float -> short -> char) * int -> float -> short -> char
みたいな型は
char (* (* f (char (* (* (*) (int)) (float)) (short), int)) (float)) (short);
みたいに書かなければならないし。
0319デフォルトの名無しさん
2005/05/25(水) 15:31:590320デフォルトの名無しさん
2005/05/25(水) 21:33:48これを日本語で読み下してもらえませんでしょうか
0321デフォルトの名無しさん
2005/05/25(水) 21:44:58ここで
A型は,int型からB型への関数型,
B型は,float型からC型への関数型,
C型は,short型からchar型への関数型.
0322デフォルトの名無しさん
2005/05/25(水) 22:16:00f : ((int -> (float -> (short -> char))) * int) -> (float -> (short -> char))
括弧で順位を付けるとこうなるのね
0323デフォルトの名無しさん
2005/05/25(水) 23:03:580324デフォルトの名無しさん
2005/05/26(木) 03:28:020325デフォルトの名無しさん
2005/05/26(木) 06:08:09関数型CPUがないから、
0326デフォルトの名無しさん
2005/05/26(木) 08:44:350327デフォルトの名無しさん
2005/05/26(木) 08:55:54http://pauillac.inria.fr/~xleroy/publi/ZINC.pdf
0328デフォルトの名無しさん
2005/05/26(木) 17:43:540329デフォルトの名無しさん
2005/05/26(木) 18:25:550330デフォルトの名無しさん
2005/05/26(木) 18:56:040332デフォルトの名無しさん
2005/05/26(木) 21:28:58同じと思ってよい
0333デフォルトの名無しさん
2005/05/26(木) 21:35:040334デフォルトの名無しさん
2005/05/26(木) 21:36:220335デフォルトの名無しさん
2005/05/26(木) 21:36:56>>330仮想機械と抽象機械ってどう違うの? 実装と仕様ってこと?
0336334
2005/05/26(木) 21:37:230337デフォルトの名無しさん
2005/05/26(木) 21:40:21virtual machine 仮想機械: ソフトウェアで記述された機械語インタープリタ。
もし抽象機械があれば、まず抽象機械と対応のとれる実装をする事が多い
0338デフォルトの名無しさん
2005/05/26(木) 22:13:460339337=334
2005/05/26(木) 22:25:340340デフォルトの名無しさん
2005/05/26(木) 22:26:44おにいちゃん・・・はずかしい・・・
0341デフォルトの名無しさん
2005/05/26(木) 22:54:030342デフォルトの名無しさん
2005/05/26(木) 23:02:470343デフォルトの名無しさん
2005/05/27(金) 05:42:110344デフォルトの名無しさん
2005/06/03(金) 08:24:260345デフォルトの名無しさん
2005/07/29(金) 23:06:11ごめんね
0346デフォルトの名無しさん
2005/09/21(水) 05:36:47どっちがいいでしょうか?
0347デフォルトの名無しさん
2005/09/21(水) 06:40:55好き嫌いの問題が大きいから、どれがお勧めとかは難しいよ。
0348デフォルトの名無しさん
2005/09/21(水) 13:35:420349デフォルトの名無しさん
2005/09/21(水) 17:30:11まず「関数プログラミング」を買って読む。
ttp://www.kindaikagaku.co.jp/bookdata/ISBN4-7649-0181-1.htm
それで理解できたらHaskellに進む。
無理だったらOCamlへ進む。
0350デフォルトの名無しさん
2005/09/21(水) 22:33:41Haskellの方が先進的ということなので、
Haskellやってみようかと思います。
0351デフォルトの名無しさん
2005/09/21(水) 22:42:200352デフォルトの名無しさん
2005/09/24(土) 00:43:280353デフォルトの名無しさん
2005/09/24(土) 00:46:51或は副作用を切り分けられるとか。
0354デフォルトの名無しさん
2005/09/24(土) 01:18:52副作用がないことがあらかじめわかってるからこそできることって
なんだろう?
そういう機能をC++とかにいれたりしないんだろうか?
0355デフォルトの名無しさん
2005/09/24(土) 01:22:55why functional programming matters
ttp://www.sampou.org/haskell/article/whyfp.html
0356デフォルトの名無しさん
2005/09/24(土) 01:57:58C++に例えるならテンプレートのコンパイルタイムプログラミング
今流行じゃないのか?
0357デフォルトの名無しさん
2005/09/24(土) 03:35:43まだ研究段階だから。そんなこと言うなら○○入れろとかいくらでも言える。
0358デフォルトの名無しさん
2005/09/24(土) 11:54:50不必要に副作用に頼らなくていいのがひとつの利点だと思う。
たとえばループをまわすときに毎回カウンタ変数を更新するのは直感的でない。
そこで高階関数を使って典型的なループを抽象化する。
この点では副作用が禁止されていることはそれほど重要ではない
(たとえば、副作用を避けて再帰でやっても似た問題がある)ので、
この手法はC++の標準アルゴリズムなんかに取り入れられている。
一方、C++の標準アルゴリズムがそれほど使いやすくない(私見)理由のひとつは、
直感的な「データ構造の値渡し/値返し」が効率上の理由から避けられている事だ。
副作用がなければ、値渡しと参照渡しを区別できないので、
値渡しの直感性を保ったまま参照渡しで実装できる。
さらに、データが変更されないことが保障されていれば、
データ構造の共有もやりやすい。
0359デフォルトの名無しさん
2005/09/24(土) 12:23:24関数型は関数に副作用がないことを仮定できる時、
どこまでコードが抽象化できるかを考えてるわけですね。
JavaやC#、C++を使っていますが、
やはり何か足りないと感じてます。
そのヒントが副作用にあるといいのですが。
まだまだプログラミング言語って改良の余地ありますよね。
0360デフォルトの名無しさん
2005/09/25(日) 23:32:37HTTPdとかWEBクライアントとか作ってる人っているのかな?
0361デフォルトの名無しさん
2005/09/25(日) 23:41:16web browser
ttp://pauillac.inria.fr/~furuse/jmmm/index.html
0362デフォルトの名無しさん
2005/09/26(月) 00:39:04ttp://lambda-the-ultimate.org/node/view/943
そのキャッシュ
ttp://www.google.com/search?q=cache:lambda-the-ultimate.org/node/view/943+haskell+web-server&strip=1
0363デフォルトの名無しさん
2005/09/26(月) 06:59:36Tkベースで不細工だけど
関数型で書いてる意味あんの?
0364デフォルトの名無しさん
2005/09/26(月) 07:07:400365デフォルトの名無しさん
2005/09/26(月) 07:12:22意味をどのレベルで求めるかに依るんじゃないかな。
ttp://pauillac.inria.fr/~furuse/jmmm/0418/faq-ja.html#caml
以前 ML スレで ML で書いた OS の話が出て来た時も、意味が
有るか無いかって話題になったけど、その議論自体あまり意味が
無いんだよね。要は人それぞれ。
俺は作者の中の人じゃないから、存在するって事以外知らんよ。
0366デフォルトの名無しさん
2005/09/26(月) 07:14:15何でそう思ったのかな。
0367デフォルトの名無しさん
2005/09/26(月) 08:04:12ゲームぐらいは作れるよ。
0368デフォルトの名無しさん
2005/09/26(月) 12:00:490369デフォルトの名無しさん
2005/09/26(月) 12:10:40なんせhaskell覚えたて厨がPugs1ヶ月で作ってるし
0370デフォルトの名無しさん
2005/09/26(月) 18:01:28whiteで3D格闘ゲームよろ
0371デフォルトの名無しさん
2005/09/26(月) 20:46:40MLでWebサーバ作成
http://pllab.jaist.ac.jp:8080/education/i217-2002/httpd.html
0372デフォルトの名無しさん
2005/09/26(月) 21:55:340373デフォルトの名無しさん
2005/09/26(月) 22:12:030374デフォルトの名無しさん
2005/09/26(月) 22:21:240375デフォルトの名無しさん
2005/09/26(月) 22:36:580376デフォルトの名無しさん
2005/09/27(火) 00:39:430377デフォルトの名無しさん
2005/09/27(火) 09:04:21TPOをわきまえろ。
0378デフォルトの名無しさん
2005/09/27(火) 15:32:100379デフォルトの名無しさん
2005/09/27(火) 16:04:58>>378はなんでそう思ったんだ?
0380デフォルトの名無しさん
2005/09/27(火) 17:39:280381デフォルトの名無しさん
2005/09/27(火) 18:49:270382デフォルトの名無しさん
2005/09/27(火) 18:59:16実用的じゃないからなんだが
0383デフォルトの名無しさん
2005/09/27(火) 19:21:17そうでないと非実用的。
0384デフォルトの名無しさん
2005/09/27(火) 21:14:250C言語をリプレイスするだけのメリットがないだけだろ。
0385デフォルトの名無しさん
2005/09/27(火) 22:35:49ID:0>>384
お前Win板とかで「Jane最強!!」とか「Opera糞!!」とかいってるタイプ?
0386デフォルトの名無しさん
2005/09/27(火) 23:24:29関数型は使われない、これ事実。
でも俺らは研究する、飯のために。
0387デフォルトの名無しさん
2005/09/27(火) 23:35:50僅かな人間だけが使いこなせるこの現状のほうが、俺には都合がいいし。
0388デフォルトの名無しさん
2005/09/27(火) 23:46:34関数型の知名度が上がるのはこれから
0389デフォルトの名無しさん
2005/09/28(水) 00:03:190390デフォルトの名無しさん
2005/09/28(水) 00:06:34もう関数型にこだわってる実用性の低い言語に価値はないね。
0391デフォルトの名無しさん
2005/09/28(水) 00:09:33ヒント:統計
0392デフォルトの名無しさん
2005/09/28(水) 01:28:20http://news19.2ch.net/test/read.cgi/newsplus/1127835258/l50
この証明の検証に使用された定理証明システムはMLで書かれたプログラムです。
0393デフォルトの名無しさん
2005/09/28(水) 07:57:210394デフォルトの名無しさん
2005/09/28(水) 08:51:570395デフォルトの名無しさん
2005/09/28(水) 10:06:030396デフォルトの名無しさん
2005/09/28(水) 11:27:170397デフォルトの名無しさん
2005/09/28(水) 18:01:43使われてないよ派
├OSが関数型じゃないから派
│├そもそもCPUが手続き的派
│└だからMLでOS作ろうぜ派(古典的行動派(絶滅の危機))
│ └やっぱLISPマシンだよ派(懐古派、第6世代派)
├関数型は遅い派
├関数型は人間の思考と合わないよ派(右派過激派)
│└それは最初に手続き型でプログラミングを習うからだ派
│ └最初にSchemeで教育しよう派(MIT信奉過激派)
│ └最初の教育はLOGOだろ派、Smalltalkだろ派(スレ違い派)
│ └LOGOは関数型言語だよ派(スレ違い修正派)
├機械語最強派(小学生派)
├おまいらは使わなくていいよ派(過激アカデミック派)
└火星人の陰謀だよ派(電波派)
使われているよ派
├定理証明とか言語処理とかはやっぱ関数型だよね派(穏健アカデミック派)
│└HaskellでRubyインタプリタ書きました派(行動派)
├Webサーバーとか実用アプリも書けるよ派
│└Haskellでグラディウス書きました派(行動派)
├C++とかPnutsとかC#とかで関数型は生き続けるよ派(中道派)
│└C++もJavaScriptもRubyも関数型言語だよ派(左派過激派、関数オブジェクトがあればみんな関数型だよ派)
└うちのシェルはeshだよ派
0398デフォルトの名無しさん
2005/09/28(水) 21:15:26君すごい。
関数型って開発環境が無いから使われないのかねぇ。
使われない理由を積極的に考えて、そこを改善していけばいいと思う。
行き着く先はC#みたいなものになるかもしれないけど、
たぶんC#よりちょっといいものができる気もする。
APIが移植されてないとかそういう理由かな。
関数型でTomcatみたいなのを作ろうかと思ってるんだけど、
お勧めの言語とOSってあります?
0399デフォルトの名無しさん
2005/09/28(水) 21:57:240400デフォルトの名無しさん
2005/09/28(水) 22:12:080401デフォルトの名無しさん
2005/09/28(水) 23:08:08家に帰るとPythonでバリバリラムダりまくっちゃうの)
0402デフォルトの名無しさん
2005/09/28(水) 23:16:24Haskell & Linux
0403デフォルトの名無しさん
2005/09/29(木) 00:19:48そんな時間もないから、OCamlかHaskellのどっちかにしたい。
どっちも気に入ってる言語だから、
誰かもっと決定的な理由が欲しい。
Tomcatのようなミドルウェアを置くか、
ミドルウェアを見せないで、
ASPやJSPみたいなテンプレートエンジンを作ってしまうかでも迷ってる。
0404デフォルトの名無しさん
2005/09/29(木) 00:43:42>関数型って開発環境が無いから使われないのかねぇ。
開発環境いうよりは、まともなフレームワークが少ないからだと思う
関数型便利だ便利だっていってる人の大半はなんだかんだ理屈ならべて
ちっこいプログラムしか書かんから、
そもそもそういうでかいライブラリの需要もすくないんだろーな
0405デフォルトの名無しさん
2005/09/29(木) 00:49:43関数型はそうもいかんもんねえ。
0406デフォルトの名無しさん
2005/09/29(木) 02:11:48なんてあるけど、一部のlibraryやoptimizerとしてC言語があるだけで、
別に何の言語でもいいんじゃねー?
0407デフォルトの名無しさん
2005/09/29(木) 15:08:18それはネタだから。
ネタにマジレスかっこ悪いって。
0408デフォルトの名無しさん
2005/09/30(金) 04:30:280409デフォルトの名無しさん
2005/09/30(金) 21:01:16簡単なテキストフィルターなんかじゃなくて、
もっと高度なことをしたいのかな?
0410デフォルトの名無しさん
2005/09/30(金) 21:21:460411デフォルトの名無しさん
2005/09/30(金) 22:35:30なんだかんだでPerlだってそうしてるでしょ?
0412デフォルトの名無しさん
2005/09/30(金) 23:48:32この辺の対応状況については、漏れの知っている限りでは、
OCaml: camomile を入れれば、いろんな文字コードのものをひとまず Unicode
に変換して、統一的に扱うことができる。正規表現だととりあえず PCRE がUTF対応。
Haskell: Hugs は CVS 版が Unicode をサポートをしているらしい。GHCはまだ怪しい感じ。
GHCで鬼車を使うパッチはある。
Scheme: Gauche はきちんと日本語をサポートをしているという印象がある。
というところで、まとめると「できんこともない」というところか。簡単なテ
キストフィルタなら問題ないだろうけど。
0413デフォルトの名無しさん
2005/10/01(土) 00:00:430414デフォルトの名無しさん
2005/10/01(土) 00:28:190415デフォルトの名無しさん
2005/10/01(土) 00:35:460416デフォルトの名無しさん
2005/10/01(土) 01:05:56GHCで鬼車を使うパッチはある。
GHCはコンパイラ自体の字句解析がEUC以外の多バイトコードに対応してない。
0417デフォルトの名無しさん
2005/10/01(土) 16:15:33仕事じゃ使えない。
0418デフォルトの名無しさん
2005/10/01(土) 22:33:200419デフォルトの名無しさん
2005/10/01(土) 23:13:080420デフォルトの名無しさん
2005/10/01(土) 23:44:180421デフォルトの名無しさん
2005/10/02(日) 00:12:31この法案聞こえはいいが、日本滅亡の序曲ですよ。
↓
小泉が人権擁護法案早期に提出 (05/9/29・国会答弁)
http://live14.2ch.net/test/read.cgi/liveplus/1127977257/
人権擁護法案ってどんなものなんだ?
http://blog.livedoor.jp/monster_00/archives/cat_847822.html
分かる!人権擁護法案(Flash)
http://www.geocities.jp/kaniku4/
言 論 弾 圧 に よ り 2 c h も 閉 鎖 か ! ?
0422デフォルトの名無しさん
2005/10/03(月) 06:18:240423デフォルトの名無しさん
2005/10/03(月) 14:07:020424デフォルトの名無しさん
2005/10/05(水) 14:29:22フォン・ノイマン型アーキテクチャだと関数型といえないだろ
CPU,メモリ,入出力という発想から脱却しないと
0425デフォルトの名無しさん
2005/10/05(水) 22:03:310426デフォルトの名無しさん
2005/10/05(水) 22:31:34Lispマシーンのinstruction setは関数型じゃありませんって。>>425
それが、hardware Lisp CPUであろうと、Virtual Machineだろうと。
言語としてのLisp自体、制御構造とか副作用とかが
沢山ありますよね。それをサポートするためのinstructionで
いっぱいで、その全体は関数型とは程遠いですよ。
むしろ、ちょっと風変わりな(保守的・古典的な)プロセッサって感じ。
一方、LispマシンorVMの存在は認めた上で、それが関数形言語の
実装という応用に対して便利か?という議論はありえますが、
これにも僕は否定的です。
0427デフォルトの名無しさん
2005/10/05(水) 23:16:200428デフォルトの名無しさん
2005/10/05(水) 23:30:43値は命令間を直接流れる
0429デフォルトの名無しさん
2005/10/06(木) 00:42:28FPGAの設計に落とし込んだりできないだろうか。
0430デフォルトの名無しさん
2005/10/06(木) 02:09:020431デフォルトの名無しさん
2005/10/06(木) 02:10:380432デフォルトの名無しさん
2005/10/06(木) 02:29:19ttp://homepage3.nifty.com/mogami/diary/d0509.html#28t1
Lisp/Common Lisp は純粋関数型じゃないから置いておいても、
これからのメニーコア CPU には関数型言語がベストマッチだと
いう考えが出て来てもおかしくはないかな。
0433デフォルトの名無しさん
2005/10/06(木) 02:50:14容易だが、相互に通信したり状態を共有したりするようなのは
純粋関数型で書くのはなかなか難しいと思う。
例えば探索なんか一見パラにできそうでもキャッシュやルックアップテーブルが
きちんと機能して枝刈りできないとつらいっしょ。
>>432のリンク先に書いてあるようなミクロな並列性はスレッドをプールから
ひっぱってきてアサインして完了を待つなんてことやるコストに引き合うか
疑問でしょ。たぶんプロファイルとった上で限られた部分にだけ適用しても
引き合うんじゃないの。行列計算とかならともかく、インタラクティブなもの
はたいがい状態引き回しが必要だろうし。
>>432みたいのはちょっと、裏付けなさすぎの与太話の域を出ないんじゃないかな。
0434デフォルトの名無しさん
2005/10/06(木) 13:28:450435デフォルトの名無しさん
2005/10/06(木) 19:15:02Tomasulo algorithmは見方によっては命令間で直接データを渡してるな。
見方によってはただのレジスタリネーミングだけど。
0436428
2005/10/06(木) 21:22:110437デフォルトの名無しさん
2005/10/16(日) 18:58:16関数型が使えないなんてことにはならないかもしれんな
と最近思った。
0438デフォルトの名無しさん
2005/10/16(日) 19:31:100439デフォルトの名無しさん
2005/10/17(月) 23:27:54って言ったら怒る?
0440デフォルトの名無しさん
2005/10/18(火) 00:04:29まだちょっとしか読んでないけどなかなかおもしろいよ。
http://www.gigamonkeys.com/book/
0441デフォルトの名無しさん
2005/10/18(火) 00:20:32コードを書く話かと思います。関数型言語と関係があるように思えませんでした。
Common Lispを関数型言語とは普通呼ばないし、Lispの中でもCommn Lispは
関数型プログラミングはやりにくい部類ですよね。
0442441
2005/10/18(火) 00:33:53今改めて>>1をみたら、Lispスレや、あろうことかEmacs Lispスレまで
関係あることになってるのな。そういうpositionのスレだとは知らんかった。
てなわけで、関数型に対してカタクナ過ぎる俺は無視して続けてくれい >>440
0443デフォルトの名無しさん
2005/11/01(火) 22:07:10多少の派閥があるだけだから。
0444ハーピィ
2005/11/01(火) 22:23:520445デフォルトの名無しさん
2005/11/06(日) 00:08:28つうか Lisp の中で特別 Common Lisp が関数型やりにくいってのは誤解だと思
われ。ただ単にマルチパラダイムなだけでやるやつはやる。そんとき特別
Scheme よりやり難いってわけでもない。型推論とかパターンマッチング構文も
いくつか実装があったような
0446デフォルトの名無しさん
2005/11/06(日) 02:43:18ttp://www.kb.ecei.tohoku.ac.jp/~sumii/ocamlbook/book-ora.pdf
の88pの練習問題 字句木をやっているんですが、stringの先頭から
順番に文字を受け取りたいときってどうすればいいんですか。
もちろんstr.[n]ってすればできるんですけど、
リストみたいにもっとスマートにできないんですかね。
0447デフォルトの名無しさん
2005/11/06(日) 03:08:39一応より特化したスレがあるが
関数型言語ML(SML, OCaml, etc.), Part 3
http://pc8.2ch.net/test/read.cgi/tech/1103606223/
0448デフォルトの名無しさん
2005/11/06(日) 03:48:10残念ながら、そういう方法はない。ので、
1. str.[n]を駆使する
2. 自分で list_of_string を書いてリスト化してから処理する
3. Stream.of_string を使って Stream で処理する
4. そのほか
のどれかをやるしかない。
この練習問題くらいなら 2 だろうなという気がする。
0449デフォルトの名無しさん
2005/11/15(火) 15:28:300450デフォルトの名無しさん
2005/11/19(土) 16:19:08http://sourceforge.net/softwaremap/trove_list.php?form_cat=160
C++ 16669
Java 16645
C 15876
PHP 12092
Perl 6187
.
.
.
LISP 323
0451デフォルトの名無しさん
2005/11/19(土) 18:22:43Visual Basic .NET 289(*≧∇≦)ノ☆ ギャハハ プギャー
0452デフォルトの名無しさん
2005/12/15(木) 08:10:46教えてくれぬか
0453デフォルトの名無しさん
2005/12/15(木) 09:53:20マルチスレッドプログラミングで、スレッド間の(mutableな)共有変数を扱うとき、
コードの特定の部分が他のスレッドに割り込まれることなく(つまり、atomicに)実行されてほしいことがある。
STMの考え方は、その部分で起こった共有変数への読み書きを局所的なログに保存しておいて、
その部分が終了したときまとめてメモリに反映するというもの。
最後に不整合が見付かった場合、ログを捨てて最初からやり直す。
こういうとき普通はロックを使うんだけど、ロックにはいくつか問題がある。
例えば、共有変数を扱う二つの(副作用のある)関数A,Bがあったとして、
A,Bともに正しくロックを使っていたとしても、「Aを呼び、次にBを呼ぶ」ことをatomicに行う
関数を書くには、AとBの抽象化を破壊してどの変数をロックすべきかを調べないといけない。
STMはこの問題を解決する。
http://www.research.microsoft.com/%7Esimonpj/papers/stm/index.htm
俺はこれの前半を読んだだけだから、変なことを言ってたら突っ込んでくれ。
0454デフォルトの名無しさん
2005/12/15(木) 22:23:18最後にコミットするときはロックによるatomicityの保証がいる筈だが、
Cで書いたcommit APIの中に閉じ込めるのでHaskellからは見えないということ
みたいだな。
>>453の論文の範囲では、Haskellはuni-processorのみ、かつuser-level
threadが safe pointでしか切り替わらないからCで書いた部分はアトミック
と考えていいらしい。Rubyと同じってことだね。
0455デフォルトの名無しさん
2005/12/16(金) 10:24:50普通のウィンドゥプログラムとかかけるの?
0456デフォルトの名無しさん
2005/12/16(金) 10:28:19書けるに決まってるだろハゲ。チューリング完全を何だと思ってやがる。
0457デフォルトの名無しさん
2005/12/16(金) 10:29:27>ログを捨てて最初からやり直す。
うーん、まだpaper読んでないけど、これってどう実現するんだろう
整合性が確かめられるまで無制限にやり直すのだろうか
0458デフォルトの名無しさん
2005/12/16(金) 19:09:500459デフォルトの名無しさん
2005/12/16(金) 19:43:540460デフォルトの名無しさん
2005/12/16(金) 20:53:42手続き型と何が違うんだ?3行でわかりやすく書け。このちんかす。
0461デフォルトの名無しさん
2005/12/16(金) 22:33:11が違
う
0462デフォルトの名無しさん
2005/12/16(金) 22:58:34ユーザレベルスレッドでしか使えないのか
0463デフォルトの名無しさん
2006/01/06(金) 21:07:13ソース見たら Erlang で書かれてた。Erlang で書かれた本格的なアプリなんて
見た事無かったから少し驚いた。
http://www.wings3d.com/
普通にサクサク動くし、Erlang ちょっと良いかも。
でも、日本じゃ何故か人気無いね。なんでだろう。
0464デフォルトの名無しさん
2006/01/06(金) 21:31:47チャイナと戦うためにはそれしかない!
最近、大原麗子見ないけど、どうしてるんだろう?
0465デフォルトの名無しさん
2006/01/06(金) 21:54:130466デフォルトの名無しさん
2006/01/07(土) 12:03:29雇用の創出こそが一番大事で、ものの良し悪しなど二の次なのですよ。
でも、結果として生産性において負けるようなことがあるなら、
それは雇用が減るということで、渋々新しいものが導入される。
0467デフォルトの名無しさん
2006/01/07(土) 20:30:410468デフォルトの名無しさん
2006/01/30(月) 22:11:12( ゚д゚)
_(__つ/ ̄ ̄ ̄/_
\/ /
 ̄ ̄ ̄
( ゚д゚ )
_(__つ/ ̄ ̄ ̄/_
\/ /
0469デフォルトの名無しさん
2006/02/12(日) 13:39:240470デフォルトの名無しさん
2006/02/12(日) 15:45:35ハスケル標準
さらにスピード要求の機能はCやアセンブリ
0471デフォルトの名無しさん
2006/02/12(日) 18:43:42「MLやHaskellに代表される関数型プログラミング言語について調べ、
PascalやC言語に代表される手続き型言語との相違を説明するとともに、
関数型プログラミング言語が広く普及していない理由を議論しなさい。」
というのが出たのですが、さっぱりです。
頭のイイおまいら、教えてください!!
0472デフォルトの名無しさん
2006/02/12(日) 18:53:400473デフォルトの名無しさん
2006/02/12(日) 21:41:29とりあえずラムダ算法がベース。ここまでで広義の関数型言語(関数的、とも云える):Lisp方言やMLなど
参照透明性があるとか副作用がないとか(副作用はモナドや一意型などで解決している):HaskellやClean
普及してない理由はCやJavaやPerlがなんで普及しているかを考えればおk
詳細は ttp://www.shiro.dreamhost.com/scheme/trans/being-popular-j.html
俺の個人的見解では「ある言語しか知らないプログラマはその言語でしか物を考えられない(ほげ言語のパラドクス)」と
関係してると思う。ほげ言語のパラドクスについては ttp://www.shiro.dreamhost.com/scheme/trans/beating-the-averages-j.html
0474デフォルトの名無しさん
2006/02/12(日) 21:43:00Wikipedia とかも見とけ。
0475デフォルトの名無しさん
2006/02/12(日) 21:57:04「関数プログラミングをencourageする言語」と言ったところか。
Basic, C, C++, Javascript, Lisp, ML, Haskell
のうち、適当なところから右が関数型言語ということになるかな。
「ラムダ計算を基礎とする言語」という定義は、Unlambdaという例外があるのでよくないと思う。
0476デフォルトの名無しさん
2006/02/12(日) 22:04:48474ですが、Unlambdaでぐぐったら「Unlambdaは、obfuscated programming languages
(混乱させるプログラム言語、といったところでしょうか) の一種として開発された言語です。
しかしただそれだけではなく、純粋関数型言語というもう一つの特徴も持っています」
とあったのですが……。しかし生産性は高くなさそうですね。
#広義の関数型言語、のもっといい定義というか表現、誰かお願いします
0477デフォルトの名無しさん
2006/02/12(日) 23:45:470478471
2006/02/13(月) 00:53:18色々ありがとうございます。
今日色々考えてみて、実際問題として、数学的な考えをもてるプログラマが少ないことが一番
関数型プログラミング言語の普及を妨げてるのかな、と思ったんですが、どうでしょうか?
素人なんで、間違っていたらすみません。
0479471
2006/02/13(月) 01:33:29「広義の関数型プログラミング言語とは〜であり、LispやSchemeがこれに含まれる。
より厳密な意味での関数型プログラミングとは〜であり、Haskellが挙げられる。」
という文章を書きたいのですが、〜にはどういう内容を書けば適当でしょうか?
因みに、厳密な定義の要件としては、「参照透過性」を満たすだけでよいのでしょうか?
0480デフォルトの名無しさん
2006/02/13(月) 01:47:20広義の方はラムダ算法とか高階関数とかがごく普通に使われる言語、みたいな感じでいいと思うよ。
厳密の方はWikipedia によれば(ttp://ja.wikipedia.org/wiki/%E5%8F%82%E7%85%A7%E9%80%8F%E9%81%8E%E6%80%A7)
どうもそうっぽい。宣言型言語とも呼ばれるみたいだね。
#レポートの成功とそう遠くない将来、関数プログラマとしてここに来てくれることを期待する:-)
0481デフォルトの名無しさん
2006/02/13(月) 01:47:400482473
2006/02/13(月) 01:48:39http://ja.wikipedia.org/wiki/%E5%8F%82%E7%85%A7%E9%80%8F%E9%81%8E%E6%80%A7
だね。閉じ括弧までURLと見なされる@xyzzy+2ch-mode
0483デフォルトの名無しさん
2006/02/15(水) 04:54:070484デフォルトの名無しさん
2006/02/15(水) 04:58:490485デフォルトの名無しさん
2006/02/15(水) 07:47:17くだらない言語ばっかり山のように作って、
それらの上にくだらない意味論を定義して。
ゴミを山盛りにするのが言語屋の仕事ですか?
0486デフォルトの名無しさん
2006/02/15(水) 09:41:430487Why not FP ?
2006/03/24(金) 21:35:32手続型に較べて高度な抽象化が要求されるけど、普通の人にはそれほど高度な抽象化ができないから。
高度な抽象化ができるのは極一部のプログラマだけで、マジョリティではないから。
…と思ったんだけど、どーよ?
0488デフォルトの名無しさん
2006/03/24(金) 22:13:02という意識があるからではないだろうか
0489デフォルトの名無しさん
2006/03/24(金) 22:16:42つーか自分がそうなんだが・・・
関数型のプログラムの感じつかめるサイトないでしょうか・・・
長くてもかまいません。
0490デフォルトの名無しさん
2006/03/24(金) 22:20:07それもあるかも知れないが、関数型言語を使えるのに
趣味でコーディングするときには使わない人が多いことを考えると
他にも大きな理由がある気がする。
0491デフォルトの名無しさん
2006/03/24(金) 23:07:560492デフォルトの名無しさん
2006/03/25(土) 04:25:03あれなら、結構Webに転がってると思う
0493デフォルトの名無しさん
2006/03/25(土) 23:07:55ライブラリが揃ってれば、、
(日本語ドキュメントつきで)
実験コードからちっとも先に進まない俺
0494デフォルトの名無しさん
2006/04/10(月) 20:21:55それなら日本語ドキュメントは少なめだが(でも今年本が立て続けに出るらしい)Haskellがオススメ。
0495デフォルトの名無しさん
2006/04/10(月) 20:36:410496デフォルトの名無しさん
2006/04/10(月) 22:04:140497デフォルトの名無しさん
2006/04/18(火) 01:42:02lambda をなんとなく実装してみたけど、遅延評価は実装できなかった・・・。
0498デフォルトの名無しさん
2006/04/18(火) 09:29:51無理ではない。
0499デフォルトの名無しさん
2006/04/18(火) 14:40:09どうやるの?
0500デフォルトの名無しさん
2006/04/18(火) 15:57:490501497
2006/04/19(水) 00:59:45ただの遅延評価(BOOST とかの lambda)はコンパイルレベルで出来るのでOKなんですけど、
たらいまわし関数を最適な形で処理できる遅延評価をC++で実装したいわけなんです・・・。
0502デフォルトの名無しさん
2006/04/19(水) 01:04:53完全遅延、すなわちグラフリダクションを実装するのは難しいな。
Haskellをほぼ全て実装することに等しい。
0503デフォルトの名無しさん
2006/04/23(日) 01:56:045分以上かかっても構いませんのでどなたか解説をおながい致します m( _ _ )m
0504デフォルトの名無しさん
2006/04/23(日) 07:18:360505デフォルトの名無しさん
2006/04/23(日) 10:06:230506デフォルトの名無しさん
2006/04/23(日) 13:59:55そんなこといわないで、お・ね・が・い♥
0507デフォルトの名無しさん
2006/04/28(金) 00:06:17一部 BOOST の Lambda で使われてるテンプレート駆使したらほぼ望みどおりのものが出来ましたよ。
自前の Lambda もつくってみたけど、戻り値をTypeList(BOOST では tuple だっけ?)をつかっててクロージャーには使えなかった('A`)
0508デフォルトの名無しさん
2006/04/28(金) 11:31:410509デフォルトの名無しさん
2006/04/30(日) 02:03:00ノシ
まあ、あまり関数型言語という意識はないけど。
0510デフォルトの名無しさん
2006/05/03(水) 12:12:23JVM, Parrot, C--など。(C--は中間言語かな)
>>422
すげー亀レスで、しかもちょっと方向が違うけど、
昔九州大学で、データフロー計算機の上で関数型言語動かしてましたよね。
0511デフォルトの名無しさん
2006/05/03(水) 12:13:30Parrot上で動くHaskellはないんですね。
List(cons)の実装が非効率的になるからかな?
0512デフォルトの名無しさん
2006/05/04(木) 14:21:560513デフォルトの名無しさん
2006/05/04(木) 19:01:51ちょっとスレ違いかも知れんけど
0514デフォルトの名無しさん
2006/07/30(日) 11:27:030515デフォルトの名無しさん
2006/09/25(月) 07:49:030516デフォルトの名無しさん
2006/11/04(土) 13:02:330517デフォルトの名無しさん
2006/11/04(土) 20:04:300518デフォルトの名無しさん
2006/11/04(土) 22:23:230519デフォルトの名無しさん
2006/11/05(日) 00:07:07プログラムが実行されるということの本性をモデル化しようとしたらああなった,ってんだけど
# 歴史的経緯はよく知らない
0520デフォルトの名無しさん
2006/11/05(日) 00:48:00関数型プログラムって何だろう。
まず一括りにするとややこしいから具体的なものを出してちょうだい。
そして、おそらく現存するものは知りうる限りすべてラムダ計算とはちがう。
0521デフォルトの名無しさん
2006/11/23(木) 19:39:21関数を変数として扱えること
0522デフォルトの名無しさん
2006/11/23(木) 21:24:56じゃあCは関数型言語ですね!
qsortとかbsearchとかどうみても関数を値として使ってます
0523デフォルトの名無しさん
2006/11/23(木) 21:44:420524デフォルトの名無しさん
2006/11/23(木) 22:08:350525デフォルトの名無しさん
2006/11/23(木) 22:12:410526デフォルトの名無しさん
2006/11/23(木) 22:14:13実行時に作る手段がないだけで。
0527デフォルトの名無しさん
2006/11/23(木) 22:17:210528デフォルトの名無しさん
2006/11/24(金) 23:19:32型付ラムダ式に
いろいろ付け加えたものに
みえるけど。
(型付と形無しは別物ではあるけど)
0529デフォルトの名無しさん
2006/11/24(金) 23:21:550530デフォルトの名無しさん
2006/11/25(土) 12:20:390531デフォルトの名無しさん
2006/11/25(土) 13:45:08ググレカス
0532デフォルトの名無しさん
2006/11/25(土) 14:21:56http://www.google.co.jp/search?hl=ja&q=%E4%BC%8A%E8%97%A4+Haskell&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
0533デフォルトの名無しさん
2006/11/28(火) 07:00:43要約
「最近Lambda the Ultimateへの記事投稿が減ってるんだけど,このまま行ったら消滅しちゃうことになるよ?」
0534デフォルトの名無しさん
2006/11/28(火) 16:03:280535デフォルトの名無しさん
2006/12/01(金) 10:25:300536デフォルトの名無しさん
2006/12/01(金) 20:56:08答えられる人がいるかどうかは知らんけど。
0537デフォルトの名無しさん
2006/12/01(金) 22:00:04エアランク?
アーラン?
0538デフォルトの名無しさん
2006/12/02(土) 00:18:290539デフォルトの名無しさん
2006/12/02(土) 00:31:390540デフォルトの名無しさん
2006/12/02(土) 01:53:140541デフォルトの名無しさん
2006/12/02(土) 07:10:280542デフォルトの名無しさん
2006/12/03(日) 17:51:570543デフォルトの名無しさん
2006/12/05(火) 14:19:570544デフォルトの名無しさん
2006/12/08(金) 01:16:57http://science4.2ch.net/test/read.cgi/informatics/1165506353/
0545デフォルトの名無しさん
2006/12/09(土) 17:53:53キーブレイクで改ページ入れ一定件数ごとにも改ページ入れる帳票出力とか難しくない?
0546デフォルトの名無しさん
2006/12/09(土) 18:46:24むしろそういうのは得意な方だと思うんだが。
0547デフォルトの名無しさん
2006/12/12(火) 18:39:17関数を動的に作成するのは魅力的だけど、
「じゃあ、どこで使用すれば効率がいいか?」って言われたら、
うーんってなっちゃう。。
今のところ、「株のスクリーニングの条件を自分でプログラムできる」ぐらいしか
アプリケーションへの応用が思いつかないです。
現在の株のスクリーニングとか出来るHPは細かいところまで指定したいのに
なかなか出来ないことが多いので。。
他に何かいい適用個所ってありますか?
0548デフォルトの名無しさん
2006/12/12(火) 19:01:42自分でプログラムできるのは、別に関数型じゃなくてもいい気がするが、
トレード用のソフトは自前のスクリプトを実装している場合が多い。
0549デフォルトの名無しさん
2006/12/12(火) 19:08:17第一級の関数の真価は、そんなマクロというか設計レベルの話じゃなく、
アルゴリズムの実装とか、従来forやらifやらで実現されてきた定型処理のようなものが
簡潔に書けることにあると思う。
0550デフォルトの名無しさん
2006/12/31(日) 19:35:44関数型言語で問題なく日本語を扱えるものには、どんなのが有るでしょうか?
haskellは無理みたいです・・・
0551デフォルトの名無しさん
2006/12/31(日) 20:44:27Gaucheとか。
0552デフォルトの名無しさん
2007/01/15(月) 22:18:12俺も>>551に一票。
ホント自然に使えてかっこイイ。
0553デフォルトの名無しさん
2007/03/26(月) 20:54:290554デフォルトの名無しさん
2007/04/09(月) 12:03:51Yコンビネータって、グローバルな名前空間を汚さずに再帰関数を受け渡すために使う?ユースケースが浮かばないんだけど。
0555デフォルトの名無しさん
2007/04/09(月) 12:16:200556デフォルトの名無しさん
2007/04/09(月) 12:16:39とするとますますYコンビネータの使い所がわからない。
0557ワロタ
2007/04/09(月) 12:18:01そのうち「チューリング・マシーンって実際のプログラミングでどんなトコに役立つの?」
とか言い出す気かw
0558アホ
2007/04/09(月) 12:39:030559デフォルトの名無しさん
2007/04/09(月) 12:42:32実際、パーサコンビネータなんて役に立つし。
SKI自体を普通のプログラムから直接使わないだろうけど、
Gaucheのマニュアルでcombinatolic programmingなんて言葉を見たし、
うまく役に立つ方法や方面があるんじゃないの?
0560バカ発見
2007/04/09(月) 12:49:19それが単純明快なプログラミング言語モデルの一つとなっている
ってだけの話だろ、表面的な所では。
詳しい話はスコットの領域理論を読み直せ>>焼き豆腐
0561デフォルトの名無しさん
2007/04/09(月) 12:50:43○ 単純明快な(純関数型)プログラミング言語モデルの一つの根拠
0562デフォルトの名無しさん
2007/04/09(月) 12:53:34だらしねぇな
0563デフォルトの名無しさん
2007/04/09(月) 12:58:010564デフォルトの名無しさん
2007/04/09(月) 13:13:35関数型言語モデル業界で
λ計算とともにその根拠となっている
コンビネータ理論だな。
FortranやBNF記法の父 John Backus が
ACM受賞講演で語った関数型言語 FP が
ちょうどこの理論で作られてたっけ。
その辺りで関数型言語が再評価されて、
現代の関数型言語ブームにつながった、と(おおぼけ)
Lispも最初はλ計算に基づいていたけど、
70年代には立派な手続き型言語に堕ちていたな。
0565豆腐って?俺の脳が豆腐って事?まあいいけど
2007/04/09(月) 13:14:19CPSみたいにひとつのスタイルって言うかそれベースのライブラリ的なのが。
ないの?
0566デフォルトの名無しさん
2007/04/09(月) 13:15:12ベースが確立されていないので
答ようがない。
0567デフォルトの名無しさん
2007/04/09(月) 13:16:31http://pc11.2ch.net/test/read.cgi/tech/1176033534/
0568デフォルトの名無しさん
2007/04/09(月) 18:43:110569デフォルトの名無しさん
2007/04/09(月) 19:14:35高階関数を使って再帰下降型パーサを構成する
といったお話でしょうか?
それとも・・・
金融関係のお話でしょうか?
0570デフォルトの名無しさん
2007/04/09(月) 20:43:22というのと同じような意味でXMLのelementをCombinatorと呼んでいるだけと思われ。
似たような発言で「Haskll上にDSLを作る」を「HaskellにCombinatorを追加する」と言ってしまうDQNも多し。
0571デフォルトの名無しさん
2007/04/09(月) 21:03:35「自由変数のない関数」って意味ならプログラミング言語のあらゆる関数がそうだと思うんだが。
0572デフォルトの名無しさん
2007/04/09(月) 21:16:53はあ。それは良かったですね。
0574デフォルトの名無しさん
2007/04/09(月) 21:34:020575デフォルトの名無しさん
2007/04/09(月) 21:57:29コンビネータは、ぶっちゃけ 「自由変数のない関数」 で合ってるよ。
んで、プログラム言語のあらゆる関数がそうだと思うのなら、別にそれでも良いよ。間違ってはいないさ。
0576デフォルトの名無しさん
2007/04/09(月) 22:04:09さすがFランク
0577デフォルトの名無しさん
2007/04/09(月) 22:18:37引き数で受け取った関数を何らかの形で組み合わせたものを返す以外のことをしない関数、
みためでいえば、
中身には引き数以外の名前が現れない関数、って理解だけど、あってる?
0578デフォルトの名無しさん
2007/04/09(月) 22:44:20「コンビネーター計算は、λ計算と同等のことを変数やλ抽象を持たず、
ただ適用だけをもつシステムで実現しようとしたものであって、λ計算とは別物」というのは同意。
ただ、(コンビネータ計算ではなく)ラムダ計算の文脈では、単に「自由変数を含まないλ式」
という意味で結構広く使われているように思いますし、私もそのように理解してました。
本来は誤用だったのかも知れませんが、すっかり定着してしまっているように思います。
調べてみると、Simon Peyton Jones の
The Implementation of Functional Programming Languages の p.224 には
「A combinator is a lambda expression which contains no occurences of a free variable [Barendregt, 1984]」
と書いてあります。ちょっと探した限りではバーレンドレヒト以前でこの意味で使っているのは見当たらなかったので、
この用法はやっぱりバーレンドレヒトが起源なのかも。それはそれでちょっと面白いなぁ。
0579デフォルトの名無しさん
2007/04/09(月) 22:51:460580flatline ◆r6EONKKhcc
2007/04/10(火) 02:04:09こんなのもありますよ
ttp://citeseer.csail.mit.edu/mcadams01practical.html
Y in Practical Programs
0581デフォルトの名無しさん
2007/04/10(火) 02:12:26でも、PSもPDFもみんな見れない…。
右上のView or download:から本文を見るんだよね?
0582デフォルトの名無しさん
2007/04/10(火) 03:17:32最近CiteSeerのミラーがどこもまともに機能してないなぁ...
こちらで っ[ ttp://citeseer.ist.psu.edu/mcadams01practical.html ]
主張を要約すると「再帰関数を(わざわざ)Yコンビネータを使って定義するようにすると
- メモ化したくなった
- エラーの際にデフォルト値を返したくなった
- call treeを調べたくなった
等を含む色々な場合に拡張がすんなり行きますよ」というものです
まぁ読んだからって人生変わるほどのすごい論文ではないですが,小ネタとして
0583デフォルトの名無しさん
2007/04/10(火) 07:33:460584デフォルトの名無しさん
2007/04/10(火) 07:50:120585デフォルトの名無しさん
2007/04/10(火) 22:08:02この流れでよくわかった。
いちばんタチが悪いのは、単に無能なんじゃなくて「自分はわかっている」という
壮絶な勘違いにすぐ走ることだね。
0586デフォルトの名無しさん
2007/04/10(火) 22:18:420587デフォルトの名無しさん
2007/04/10(火) 22:22:360588デフォルトの名無しさん
2007/04/10(火) 22:26:59「あぁ〜コンビネータの話?」って俺様定義するのと、
ヘタレがミニ言語作るだけの行為を指して
「俺、コンビネータ作っちゃおうかなぁ〜」と意味不明発言するのでは
雲泥の差がある、ような気がしないでもない。
0589デフォルトの名無しさん
2007/04/10(火) 23:16:07大して違わねぇよ
というような気がする
0590デフォルトの名無しさん
2007/04/11(水) 21:19:09そっちじゃなくて、XMLを操作する手続きというかフィルタを合成していく方。
0591デフォルトの名無しさん
2007/04/11(水) 21:26:30といった類の話ですね。
0592デフォルトの名無しさん
2007/04/11(水) 21:28:56最近あぶない人が出没しているようだから。
高階関数を使って構文解析木を処理していく
といった類の処理なんじゃないですか?
0593デフォルトの名無しさん
2007/04/21(土) 12:18:15スレ違いっぽくて悪いんだが他に訊けそうなスレがないんで頼む。
0594デフォルトの名無しさん
2007/04/21(土) 12:20:230595デフォルトの名無しさん
2007/04/21(土) 12:37:480596デフォルトの名無しさん
2007/04/28(土) 23:49:44みんなどんな書籍参考にしてるのですか?
0597デフォルトの名無しさん
2007/04/28(土) 23:59:590598デフォルトの名無しさん
2007/04/29(日) 00:04:29なんて名前本ですか?
0599デフォルトの名無しさん
2007/04/29(日) 00:08:09あと、お前の実力では今読んでも力にならないと思う。
0600597
2007/04/29(日) 00:11:450601デフォルトの名無しさん
2007/04/29(日) 00:17:22お前さん書籍の名前知らないんじゃねーのw?
プレンティスホールなんてもうねーだろw
0602デフォルトの名無しさん
2007/04/29(日) 00:19:56プレンティスホールということは
The implementation of functional programming languages, Simon Peyton Jones, Prentice Hall 1987
でっか?
0603デフォルトの名無しさん
2007/04/29(日) 00:22:47もともと一冊程度しかねぇんだから
いちいち煽んなよクズ
0604デフォルトの名無しさん
2007/04/29(日) 00:25:41600ではないが(この板はIDが出ないんだなorz)、たしかにピアソンになってるけど
プレンティス・ホールの名前も残ってるぽいし、過去の出版物だとその当時の名前で
引用するので、あながち>>600がまちがってるわけでもない。・・・と思う。
参考:
Pearson Education
ttp://www.pearsoned.com/index.htm
Pearson Prentice Hall
ttp://phcatalog.pearson.com/co_home.cfm?site_id=6
0605デフォルトの名無しさん
2007/04/29(日) 00:27:37http://citeseer.ist.psu.edu/332842.html
みたいな論文とかじゃね?
0606デフォルトの名無しさん
2007/04/29(日) 00:30:55http://www.etl.luc.edu/laufer/ftp/papers/functoids.ps.gz
0607デフォルトの名無しさん
2007/04/29(日) 00:40:47いちいちもったいぶった物言いして他人に不快感を撒き散らすなよクズ
0608デフォルトの名無しさん
2007/04/29(日) 00:49:52シュプリンガーのLNCSにありそうな希ガスが見ちゃいねえ。すまん。
0609デフォルトの名無しさん
2007/04/29(日) 00:52:110610デフォルトの名無しさん
2007/04/29(日) 00:58:52SPJ本は、そう。
International Series in Computer Science(pub:PH)に共通の装丁があの紅白だと思う。
0611デフォルトの名無しさん
2007/04/29(日) 01:03:390612デフォルトの名無しさん
2007/04/29(日) 01:12:280613デフォルトの名無しさん
2007/04/29(日) 01:15:17うーんと、
http://research.microsoft.com/%7Esimonpj/Papers/slpj-book-1987/index.htm
のことでしょうか?
0614デフォルトの名無しさん
2007/04/29(日) 01:18:57604ではないが、どの辺が「もったいぶってる」のかも、何を不快に思うのかもまったくわからん。
メンタルクリニックでも行ったほうがいいんじゃないか?
0615デフォルトの名無しさん
2007/04/29(日) 01:21:23604ですけど俺は無視したですよ。
あの手のは反応を楽しむから、放っておいたほうがいいと思うので。
スレ趣旨と関係ないから消えますね。
0616デフォルトの名無しさん
2007/04/29(日) 01:21:29ですね。
0617デフォルトの名無しさん
2007/04/29(日) 01:23:03荒れるのだと思う。
丁寧に質問し、煽らない。これが重要。
0618デフォルトの名無しさん
2007/04/29(日) 01:23:37さんくすこ。
この本は関数型言語の実装や動作の理解にはいいけど
もともとの質問(>>596さん)ような目的にはどうなんだろ。
0619デフォルトの名無しさん
2007/04/29(日) 01:24:130620デフォルトの名無しさん
2007/04/29(日) 01:26:48どうでしょうね。
最近それっぽい人間がboostの使い方やら
ドラゴンブックの読み方を質問しまくってる状況だから
目的に向いてるか向いてないか、当人も判断できないんじゃないかと
思っていますが。
0621デフォルトの名無しさん
2007/04/29(日) 01:32:24表紙が銀色とかのレクチャーノートシリーズね。・・・つかあの中から何を探せと言うんだ
0622デフォルトの名無しさん
2007/04/29(日) 10:21:040623デフォルトの名無しさん
2007/04/29(日) 23:03:440624デフォルトの名無しさん
2007/05/01(火) 00:27:37対して抽象化は、対象物のある特徴的な側面を抽出し概念化することだ。
仮想化で抽象化の技術が使われることはあるだろうが、その逆は考え難い。
コンピュータを使い、扇風機やコタツを抽象化することはできても、仮想化する
ことはできないのだ。少なくとも今の技術では無理だ。コンピュータがその姿形
を変えることはできないのだから。コンピュータが仮想化できるものは、コンピュー
タそのものが直接扱うものだけだ。例えば、仮想メモリ、仮想ネットワーク、仮想
マシン、仮想キーボードといったものだ。
抽象化した結果表現されるものは、設計者が想定した概念やイメージだ。しかし、
実在するものそのものではなく、人が考えたものであるために、このイメージは
非常に脆く、不安定だ。外部からの影響をもろに受け、形を変え易い。個々人が
持つイメージの些細な相違から認識のずれが生じ易い。扇風機の使い方は人に
よって異なることはないが、人がイメージしたものは、その生成から、破棄に至る
まで、非常に不安定な状態になり易い。それを防ぐには、イメージそのものをなる
べく強固なものにし、インターフェースに一貫性と整合性をもたせ、外因による影響
を受けに難くく、壊れ難くするための技術を見につけ、理解を深めておくしかない。
0625デフォルトの名無しさん
2007/05/01(火) 21:13:14既出?
0626デフォルトの名無しさん
2007/05/01(火) 23:16:09話してくれなくなった...酷いよ
0627デフォルトの名無しさん
2007/05/01(火) 23:45:480628デフォルトの名無しさん
2007/05/02(水) 00:15:13あれ?今日なんかイベントあったっけ?
それとも仕事で趣味の話?
0629デフォルトの名無しさん
2007/05/02(水) 03:55:15F# 1.9が出て、Active Patterns(バナーナ構文)とか面白いものが出てきてるぞ。
少しは本家サイト見てみれ。
0630デフォルトの名無しさん
2007/05/06(日) 11:48:080631デフォルトの名無しさん
2007/05/06(日) 14:21:34"Spredsheet functional programming" の話?
ずいぶん前にも似たような話があった気がするけど
0632デフォルトの名無しさん
2007/06/07(木) 20:16:240633デフォルトの名無しさん
2007/06/07(木) 20:30:08あれは関数型言語ではなく、エンドユーザコンピューティングだ。
0634デフォルトの名無しさん
2007/06/07(木) 20:35:070635デフォルトの名無しさん
2007/06/07(木) 20:55:070636デフォルトの名無しさん
2007/06/07(木) 21:13:400637デフォルトの名無しさん
2007/06/07(木) 22:05:400638デフォルトの名無しさん
2007/06/07(木) 22:09:430639デフォルトの名無しさん
2007/06/08(金) 01:18:340640デフォルトの名無しさん
2007/06/08(金) 01:51:200641デフォルトの名無しさん
2007/06/28(木) 06:49:480642デフォルトの名無しさん
2007/07/01(日) 15:20:52新しいことやってくれよ。
0643デフォルトの名無しさん
2007/07/05(木) 06:00:250644デフォルトの名無しさん
2007/08/29(水) 18:43:31関数型プログラミングにおける reduce が分かりません。
"広い意味において"どのように理解しておけばよいのでしょうか?
説明のためにちょっと定義:
A(f,[0,1,2,3,4]) => f(0,f(1,f(2,f(3,4))))
B(f,[0,1,2,3,4]) => f(4,f(3,f(2,f(1,0))))
C(f,[0,1,2,3,4]) => f(f(f(f(0,1),2),3),4)
D(f,[0,1,2,3,4]) => f(f(f(f(4,3),2),1),0)
(1). 正直 reduce だけではどれなのか分からない。(また fold も曖昧である)。
(2). fold は reduce と同義。
(3). 普通は (reduce_r == fold_r == A) , (reduce_l == fold_l == C) で通じている。
(4). f(x,y)==f'(y,x) なら A(f)==D(f') になるので、結局のところ A,D を区別しない。(同様にB,Cも区別しない)。
(5). A,D と B,C は実装の問題だと考えている。
0645デフォルトの名無しさん
2007/10/03(水) 23:13:32fold:リスト要素の型との戻り値の型はちがっても良い
reduce:同じ
じゃない?
0646デフォルトの名無しさん
2007/10/05(金) 08:47:15別の表現をすれば、最初の項を別途与える=fold、リストからとる=reduce ?
0647デフォルトの名無しさん
2007/10/09(火) 16:20:56ニュアンスに微妙な違いがあるんですね。
0648デフォルトの名無しさん
2007/10/09(火) 23:01:13あたらしいことwww
ttp://www.blue.sky.or.jp/grass/
0649デフォルトの名無しさん
2007/10/10(水) 00:01:420650デフォルトの名無しさん
2007/10/10(水) 02:07:38なんぞこれwwwww
0651デフォルトの名無しさん
2007/10/10(水) 14:19:100652デフォルトの名無しさん
2007/10/10(水) 15:48:39これはワラタ。
けど、手で書きにくすぎる上に機械生成が簡単過ぎるので、
変態言語としては微妙な気がする。
あと、公式の「はいはいわろすわろす」を逆アセしてみたら、
サイズを節約するためのトリックが使ってあって面白かった。
ttp://up.uppple.com/src/up7032.txt
0653デフォルトの名無しさん
2007/11/01(木) 01:50:170654デフォルトの名無しさん
2007/11/05(月) 19:12:40F#のほうがよさげ。
0655デフォルトの名無しさん
2007/11/14(水) 14:31:47それはちょっとキツいかも。
思えば generic な HashMap も java.util のそれではなく scala.collection.mutable.HashMap だったり…
しかし今Scala触ってて Option型と for記法に感動したんだが。
val o2 = new HashMap[int,int]();
o2(1) = 2
for(i<-o2.get(1)) {println(i)}
for(j<-o2.get(2)) {println(j)}
まんまMaybeモナドやん! Scala最強
0656デフォルトの名無しさん
2007/11/14(水) 14:35:25o2(1) = 2
for(i<-o2.get(1)) {println(i)} // 2が出力される
for(j<-o2.get(2)) {println(j)} // 何も出力されない (エラーにならない)
for(i<-o2.get(1); j<-o2.get(2)) {...} // j の束縛に失敗するので何も出力されない (エラーにならない)
まじで Scala の範囲内なら NullPointerException 撲滅できそう。
既存のコード書き直すと Option型だらけになる場合もありそうだけど。
それだけに、 asInstanceOf の戻り型をなぜ Option 型にしなかったのか理解に苦しむ…
0657デフォルトの名無しさん
2007/11/15(木) 23:11:060658デフォルトの名無しさん
2007/11/19(月) 21:16:55Javaだと null かもしれない Integer 型を扱う必要があるけど、
Scala なら Option[int] みたいな感じで、 無効な値を含む場合を陽に切り分けることができるっす。
これだけだと、無効な値を含むかどうかをチェックしなきゃだめでめんどくさいんですが、
Haskell でいう Maybe モナドみたいな書き方がサポートされているので、if文が必要なくなり楽ができます。
しかも JVMで動く型付きの関数型言語。ちょっと良さげだと思うです。
>>654 みたいな欠点はあるけど。
0659デフォルトの名無しさん
2007/11/20(火) 13:06:09それ前提にライブラリ構成されるようになるかもね。
C++もboost::optionってのがある。
0660デフォルトの名無しさん
2007/12/06(木) 07:18:160661デフォルトの名無しさん
2008/03/16(日) 17:25:51具体的に言うと、ARMやMIPS-RのGCCでスタティックリンクできるものがあれば
紹介して頂けないでしょうか。
0662デフォルトの名無しさん
2008/03/16(日) 20:58:120663デフォルトの名無しさん
2008/03/17(月) 03:39:13関数型言語的に言うと、domianがliftingされてるわけです。
0664デフォルトの名無しさん
2008/03/17(月) 10:54:190665デフォルトの名無しさん
2008/04/01(火) 12:25:53手続き型より巨大になっていくか、融合していくか、今のままなのか。
0666デフォルトの名無しさん
2008/04/01(火) 13:37:070667デフォルトの名無しさん
2008/04/02(水) 01:18:44プログラムに参照の透明性があるのは手続き型言語でも好ましいことなので、
関数型言語で産み出された種々の機構が
手続き型言語に結び付けられるのではないでしょうか。
0668デフォルトの名無しさん
2008/04/02(水) 04:15:200669デフォルトの名無しさん
2008/04/02(水) 07:26:360670デフォルトの名無しさん
2008/04/02(水) 10:39:27純粋関数型言語では困難なことがある。
その困難に立ち向かって獲得した手法は、
他の言語でも極めて有益なことがある。
不自由さの中で獲得した手法がきわめて豊穣である、
これは数学基礎論で起っていることと同じである。
0671デフォルトの名無しさん
2008/04/02(水) 10:51:01主流の言語は確実にこっちに向かってる
少なくとも、そう信じないとやってられない
0672デフォルトの名無しさん
2008/04/02(水) 10:52:430673デフォルトの名無しさん
2008/04/06(日) 10:16:39それとも数学的に(ラムダ計算で?)合成可能な関数オブジェクトを持った
普通のプログラミング言語になるの?(つまりc#とか既に近い所にあるのか)
0674デフォルトの名無しさん
2008/04/06(日) 10:29:14逐次処理が「表現できない」言語は実用にならないから、
普通の関数型言語はどれも逐次処理を表現できるようになってる
どうやって表現するかは言語ごとに違って、組み込みで持ってるの(Scheme,ML)とか、
データに関数を適用して、その結果に関数を適用して…という構造で逐次処理を表すの(Clean)とか、
処理自体を第一級のデータとして扱うの(Haskell)とか
0675デフォルトの名無しさん
2008/04/06(日) 10:34:35手続き型とあんま変わんなくね?と思うことがある。
一方で、非関数型でも、定義を並べる感じできれいに書かれてるものもある。
言語も重要だが、書き手の心構えのほうが影響でかい気がする。
0676デフォルトの名無しさん
2008/04/06(日) 10:41:26やっぱ書き方というか設計によるところもあるんですね。
0677デフォルトの名無しさん
2008/04/06(日) 10:42:02Haskellで命令的に書くことも不可能じゃない
0678デフォルトの名無しさん
2008/04/06(日) 11:42:58基本的には関数の評価が強制されることを利用して順序をつけるので同じじゃないかな
0679デフォルトの名無しさん
2008/04/06(日) 12:02:37例えばSchemeの((lambda () a b c))でa b cが順に評価されるのを
「関数の評価が強制されることを利用」と表現するのは無理がないか?
Haskellの動作に至っては関数と全く(特定の処理系の内部実装の話を別にすれば)関係ない
0680デフォルトの名無しさん
2008/04/07(月) 01:32:030681デフォルトの名無しさん
2008/05/02(金) 11:33:010682デフォルトの名無しさん
2008/11/15(土) 14:37:09チュートリアルがよく解らない。もっとやさしい、
サイトないですか?
0683デフォルトの名無しさん
2008/11/15(土) 21:00:06ギラン・バレー症候群っていう運動神経の障害で闘病されていたそうです。
0684デフォルトの名無しさん
2008/11/27(木) 04:10:170685デフォルトの名無しさん
2008/11/27(木) 07:17:06過去形とはどういう意味ですか?
0686デフォルトの名無しさん
2008/11/30(日) 12:10:150687デフォルトの名無しさん
2009/01/11(日) 00:05:540688デフォルトの名無しさん
2009/01/11(日) 00:11:130689デフォルトの名無しさん
2009/01/11(日) 00:12:420690デフォルトの名無しさん
2009/01/11(日) 16:42:400691デフォルトの名無しさん
2009/01/15(木) 20:37:10SQL
0692デフォルトの名無しさん
2009/01/15(木) 20:38:26VBだと思うんですけど。
0693デフォルトの名無しさん
2009/01/16(金) 03:07:560694デフォルトの名無しさん
2009/01/16(金) 04:09:530695デフォルトの名無しさん
2009/01/16(金) 13:39:42関数型まんじゅう
関数型ソフトクリーム
関数型戦隊ファンクター
萌え関数型米
0696デフォルトの名無しさん
2009/01/16(金) 19:54:43レッド 並 列(ならび れつ)
ブルー 台 一休(だい いっきゅう)
ピンク 三勝 籐花(さんしょう とうか)
イエロー Curry(カレー)
グリーン 今彼 九厘(こんかれ ぐりん)
0697デフォルトの名無しさん
2009/01/16(金) 23:07:39敵: 複鎖妖(ふくさよう)
0698デフォルトの名無しさん
2009/01/17(土) 15:18:08複鎖妖軍 スパゲティ男爵「な、何だこの技は・・ワシのオーダでは歯がたたん!!」
藤花「末尾再帰よ」
スパゲティ男爵「マツビ・・サイキ・・?こんな・・こんなことが・・あのお方にお伝えしなければ・・」
0699デフォルトの名無しさん
2009/01/17(土) 20:51:550700デフォルトの名無しさん
2009/01/17(土) 20:52:240701デフォルトの名無しさん
2009/01/19(月) 00:18:32よくできててワロタ
0702デフォルトの名無しさん
2009/02/24(火) 01:55:43評価して下さい。
=(10, define(a, integer))
10をintegerと定義されたaに代入する。
print("Hello world!", console)
Hello world!をコンソール画面にプリントする。
else(if(A, B), C)
もしもAならBが実行される。
そうでないならCが実行される。
0703デフォルトの名無しさん
2009/02/24(火) 02:01:57define(a,integer))
0704デフォルトの名無しさん
2009/02/24(火) 02:04:240705デフォルトの名無しさん
2009/02/24(火) 02:08:31if(
==(1, 1),
print("Yes", console)),
print("No", console))
0706デフォルトの名無しさん
2009/02/24(火) 12:17:470708デフォルトの名無しさん
2009/02/24(火) 13:48:19print(_,_)は何を返すの? if(_,_) の第一引数の評価が偽の時は?
0709デフォルトの名無しさん
2009/02/24(火) 13:50:140710デフォルトの名無しさん
2009/02/24(火) 13:56:58(unless (when (= 1 1) (princ "yes")) (princ "no"))
と書くのと同じか、やっと分かった気がする
0711デフォルトの名無しさん
2009/02/24(火) 17:37:00命令[〜する。](目的格[〜を],対象・要素・条件[〜に、〜で、〜ならば、〜でないなら])
else(C,if(B,A))
もしもAならばBを実行する。
そうでなければCを実行する。
else(
print("aはbと等しくない。", console),
if(
print("aはbと等しい。", console),
==(a,b)
)
)
もしもaとbが等しいならば、
コンソール画面に「aはbと等しい。」と表示する。
そうでないならばコンソール画面に「aはbと等しくない。」と表示する。
0712デフォルトの名無しさん
2009/02/24(火) 17:40:57★ else文ではifよりelseが先に来る。
★ 条件式より処理が先に来る。
ということです。
0713デフォルトの名無しさん
2009/02/24(火) 17:47:200714デフォルトの名無しさん
2009/02/24(火) 18:12:52文法の統一ですよ。
0715デフォルトの名無しさん
2009/02/24(火) 19:08:05store(
{
print("Hello",console),
print("World",console)
},
difine(C,class)
),
difine(N,namespace)
)
0716デフォルトの名無しさん
2009/02/24(火) 19:26:360717デフォルトの名無しさん
2009/02/24(火) 19:43:48「どのあたりが関数型言語なのか」っていう点
先に処理がきて・・ってのは関数型に限らなくても良くない?
0718デフォルトの名無しさん
2009/02/24(火) 22:09:22>>714
if(A, else(B, C))
にしないのはなんで?
なんでelseが先に来るの?forthかぶれ?
0719デフォルトの名無しさん
2009/02/25(水) 00:05:16/(2,10)
10割る2。後ろから読みます。
0720デフォルトの名無しさん
2009/02/25(水) 00:15:240721デフォルトの名無しさん
2009/02/25(水) 00:23:37「もしもAならばBを実行する」
「もしもBを実行したならばCを実行する」
になってしまいますよ。
0722デフォルトの名無しさん
2009/02/25(水) 00:31:100723デフォルトの名無しさん
2009/02/25(水) 00:39:460724デフォルトの名無しさん
2009/02/25(水) 01:07:20この時点で何も期待できない
0725デフォルトの名無しさん
2009/02/25(水) 01:20:29それ違いますよ。文法かわったんですから!
=(difine(integer, a), 10)
0726デフォルトの名無しさん
2009/02/25(水) 09:01:390727デフォルトの名無しさん
2009/02/25(水) 12:21:31そもそもスレ違い
0728デフォルトの名無しさん
2009/02/25(水) 20:08:240729デフォルトの名無しさん
2009/02/25(水) 20:20:320730デフォルトの名無しさん
2009/02/27(金) 07:57:28計算機言語総論についてのスレって無いのかな?
0731デフォルトの名無しさん
2009/02/27(金) 08:01:250732デフォルトの名無しさん
2009/02/27(金) 09:12:260733デフォルトの名無しさん
2009/02/27(金) 15:26:43「コンパイラ・スクリプトエンジン」相談室13
http://pc11.2ch.net/test/read.cgi/tech/1233143342/
新C言語を作ろう
http://pc11.2ch.net/test/read.cgi/tech/1185010023/
いわゆる過疎スレ
0734デフォルトの名無しさん
2009/02/27(金) 15:33:360735デフォルトの名無しさん
2009/03/05(木) 10:50:46import 文でさえ、実行時に実行される文に過ぎないから、
try:
import hogehoge
config = hogehoge.config
except:
config = {...}
とか自由自在。これを関数にしちゃうこともできる。
こういうごちゃごちゃをやって、それで新しい文法を作り出せるのは面白い。
やっぱり、Lispを勉強するべきなのか。
0736デフォルトの名無しさん
2009/03/05(木) 18:17:46> こういうごちゃごちゃをやって、それで新しい文法を作り出せるのは面白い。
これと
> やっぱり、Lispを勉強するべきなのか。
これの関連がPythonとLispを良く知らないオレにはよく解らない。
解説できたら求む。
0737デフォルトの名無しさん
2009/03/05(木) 19:12:11たとえば、Python では、Cのinclude、Haskellのimportに相当するものとして、
import文というのがあって、次のように書く。
import time, re
でも、これは、CやHaskellと違って実行時に実行環境にアクセスする副作用のある関数のシンタックスシュガーで、
__import__('time')
__import__('re')
と書いているのと同じ。
だから、__import__関数をラップする関数を作って、自由な操作をすることができる。
my_import('foo')
そういうことやってどういううまみがあるのかといえば、ケースバイケースだろうけど、
オレはこういうトリックをアプリケーションの設定ファイルをライブラリのようにPythonコードでベタ書きした上、
コマンドライン引数で設定ファイルを指定できるようにしたりしている。
Lispはよく知らないんだけど、こういう自由度はLispが最強なのかなぁ、と。
0738デフォルトの名無しさん
2009/03/05(木) 19:50:30Lisp以上の自由度のあるものはないかも。あれはS式だからこそ得られる自由度だからな。
だけどね。Lispを一通りやっておくと、そこで出ている考えかたや手法はPythonなどを使って
いくには良いヒントはある。
僕としてはできれば、そのままLispのハマって欲しい。(笑)
schemeとかは処理系次第だけど、useとか使ってるね。
Common Lispの場合もuse-packageだけど、大抵は、パッケージを使うときには、
(標準化されていないけど、最近は)asdfというパッケージでライブラリを管理してますね。
sbclならrequireで一発になってる。 基本はREPL環境なんで、思いついたときにすぐに
試せるのが強みかな。このへんはpython/rubyなどと同じ感覚だとおもう。Cとかjavaな
人には異質だろうな。関数言語ならインタプリターはあるから近いとおもうけどね。
インポートしちゃうんで、その辺は他と変わらんよ。
0739デフォルトの名無しさん
2009/03/05(木) 22:09:19mapメソッドとその兄弟メソッドを猿のように使い始めた。
おかげで(副作用のある)ローカル変数をかなり削ることができて、
自分では保守性の良いコーディングになったと思ってる。
こんな感じ。
term_langs = MdTerm.new(
TermType::LANGUAGES,
:list => $language_strings_en.sort { |pair_x, pair_y| # ハッシュの値を基準にソート
pair_x[1] <=> pair_y[1]
}.map { |pair| # ハッシュのキーだけを取り出す
pair[0]
}
)
あとRubyもif/caseみたいな条件判定は式だから、上のブロック(クロージャ)内で使える。
たぶんCやPerl等しか知らない人からすると、気味の悪いコーディングに見えるんじゃないかな。
このスレの住人さん達からすればフーンなスタイルだと思うけど。
0740デフォルトの名無しさん
2009/03/05(木) 22:49:09さらにPrologでも、全解探索処理はバックトラックを利用した
Prologらしいスタイルだけど、取り出したリストの加工処理は
自作したmap系の述語(関数)を全面的に活用している。
結果として、プログラム全体の中でおよそ7割がmap系述語によるコーディングになってる。
get_importer_attr_use_importers(MdAttrName, UseImporterDict1) :-
set_of_list( # 全解探索を実行
[importer(Id, Name), ContentType], % 探索結果(=リストの要素)の形式を指定
get_importer_attr_use_importer(MdAttrName, Id, Name, ContentType), % 探索述語を指定
UseImporterTable # この変数に探索結果(リスト)が単一化される
),
!,
table_to_dict(UseImporterTable, UseImporterDict), % テーブルを辞書に変換
map_list(UseImporterDict, sort_use_importer_ent, UseImporterDict1). % 辞書をソート
get_importer_attr_use_importers(_, []) :- !.
table_to_dict(Table, Dict) :-
!,
map_list(Table, list_to_head, Heads), # テーブルの先頭(head)だけを取り出す
reject_duplicates_list(Heads, Keys), # 重複した要素(辞書のキー)を取り除く
map_list(Keys, keys_to_dict(Table), Dict). # キーを元に辞書を作成
この短い例の中だけでも述語map_listを3回使っている。
map_list は第一引数を入力リスト、第三引数を出力リストとし、第二引数の述語を呼ぶ高階述語。
Prologにはクロージャの概念が無いから、対応する述語を定義しなければならない事がちょっとめんどくさい。
0741デフォルトの名無しさん
2009/03/05(木) 23:32:36せっかくだから
$language_strings_en.sort_by(&:last).map(&:first)
と書こうぜ
0742デフォルトの名無しさん
2009/03/07(土) 10:16:42多すぎでゲロゲロだな
0743デフォルトの名無しさん
2009/03/07(土) 10:27:030744デフォルトの名無しさん
2009/03/07(土) 12:42:57Perlは噂を聞いてplaggerのソースを見たけど、あれは綺麗だな。おそろしいソースが多いから
避けてたけどね。Perlは。
>>743
Haskellは。。。最初みたときは暗号解読してる感じだったな。宇宙語って印象だがあれはあれ
でハマる要素はあるわな。
0745デフォルトの名無しさん
2009/03/07(土) 12:54:180746デフォルトの名無しさん
2009/03/07(土) 13:03:46common lispは使いたければ自分で定義しろだからな。。。
無くても不自由ではないしむしろ、自由度の秘訣。
0747デフォルトの名無しさん
2009/03/08(日) 00:21:200748デフォルトの名無しさん
2009/03/08(日) 13:06:27Haskellの記号は綺麗な記号
0749デフォルトの名無しさん
2009/03/08(日) 14:43:27Haskellのおっぱいは綺麗なおっぱい
0750デフォルトの名無しさん
2009/03/08(日) 14:50:310751デフォルトの名無しさん
2009/03/08(日) 19:10:38--
gosh> (define (。人。) (print '巨乳))
。人。
gosh> (。人。)
巨乳
#<undef>
gosh>
0752デフォルトの名無しさん
2009/04/21(火) 15:48:02ファイルに書いて読み込むとかめんどいぜ
0753デフォルトの名無しさん
2009/04/21(火) 16:12:31let使え
0754デフォルトの名無しさん
2009/04/21(火) 16:53:17あと、推論された型を知りたい場合はどうしてる?
例えば
let f a b = a + b in f
Hugsだとエラーメッセージで一応わかるがGHCiだとイミフ
0755デフォルトの名無しさん
2009/04/21(火) 18:17:250756デフォルトの名無しさん
2009/04/21(火) 20:34:020757デフォルトの名無しさん
2009/05/13(水) 09:49:41生きてる(メンテナンスの続いてる)ライブラリの多い関数型言語ってHaskellくらい?
HaskellだとWindowsで使えないライブラリが多くて
せっかくプログラム組んでも、ある程度のものになると
Unixライクな環境でしか動かないので悩んでます
0758デフォルトの名無しさん
2009/05/13(水) 11:46:36自分でメンテナンスできる言語にのりかえようぜ
0759デフォルトの名無しさん
2009/05/13(水) 13:23:12そんなことすると他のライブラリも誘爆するだろうなw
0760デフォルトの名無しさん
2009/05/15(金) 12:42:50Windowsメインなのに.NET系省くなよw
0761デフォルトの名無しさん
2009/05/15(金) 12:44:390762デフォルトの名無しさん
2009/05/16(土) 01:30:030763デフォルトの名無しさん
2009/05/16(土) 02:38:31> Windowsメインなのに.NET系省くなよw
待って、Windowsメインなんてどこにも書いてないんだけどw
まぁF#もDLR系関数型言語も途上感たっぷりで、まだ仕様が変わりまくりそうだし
インハウスツール用途だとしても仕事にはちょっと…ね
.NET系はライブラリの導入が超楽なんで、言語とその言語用のランタイムが成熟してくれば十分選択肢には入ると思う(Monoでもまずまずの動きをするし)
0764デフォルトの名無しさん
2009/06/13(土) 22:19:360765デフォルトの名無しさん
2009/06/13(土) 22:28:49関数的じゃねーよ
0766デフォルトの名無しさん
2009/06/14(日) 02:49:050767デフォルトの名無しさん
2009/06/18(木) 19:50:35そのむかしLispMachineってのがあってですね
0768デフォルトの名無しさん
2009/06/18(木) 21:24:140769デフォルトの名無しさん
2009/06/18(木) 21:40:26そのころロシアは、紙とエンピツを使った。
0770デフォルトの名無しさん
2009/06/18(木) 21:41:080771デフォルトの名無しさん
2009/06/18(木) 22:06:41Monadiusみたいのもあるけれど、状態持つようなインスタンスは素直に状態もたしてその間のプロシージャ的な処理とかを関数チックにステートレスでやるのがいろいろとちょうどいい感じと見てるんですが、どんなもんなんざんしょ。
0772デフォルトの名無しさん
2009/06/18(木) 23:46:14状態を持つオブジェクトも普通に扱える
OCamlでやりたければ、OCamlの流儀に従うと良いんじゃね
0773デフォルトの名無しさん
2009/06/19(金) 02:31:41つ[黒板]
0774デフォルトの名無しさん
2009/06/19(金) 08:05:25結局モナドは状態変化を起こすところを局所的にまとめる仕組みってことなの?
ざっと見、いまいちわからん。
0775デフォルトの名無しさん
2009/06/19(金) 21:00:12いや、HaskellのIOモナドは、状態の変化やら入出力やらを(表面上の)副作用なしで記述するための仕組み
それを局所的にまとめるのはプログラマの責任で、別にIOモナドは手伝ってくれない
それから>>772ではいい加減な書き方して悪かったけど、状態やら入出力を扱うのは「IOモナド」で
それ以外のモナドはまた別のことをする
モナドとは何かってのはこの話題にあんまり関係ないな
0776デフォルトの名無しさん
2009/06/20(土) 01:12:55が、オブジェクト指向に洗脳されてる自分からすると、世間一般の何かってのはほとんどすべてが状態持っていてオブジェクト指向はそれにナイスにあうが、それを関数型でどうナイスに扱えるのかがわからん。
だれか3行で説明してくれエロイ人
0777デフォルトの名無しさん
2009/06/20(土) 01:40:14那
滅
0778デフォルトの名無しさん
2009/06/20(土) 02:15:58状態的な言語は「状態を持っている世界の一部として取り込まれているプログラム」だが
IOモナドを使って書くと
「状態を持つ世界を観察して動くプログラム」になる。
……わかりにくいな。すまん。
0779デフォルトの名無しさん
2009/06/20(土) 06:16:30ラムダをぽこぽこ作って式を繋いだり合成して行くのが関数型
0780デフォルトの名無しさん
2009/06/20(土) 17:04:10そのラムダの合成で、オブジェクト指向のインスタンスとかで表されていたものがどう表されるのかがわからん
0781デフォルトの名無しさん
2009/06/20(土) 17:37:170782デフォルトの名無しさん
2009/06/20(土) 17:51:42分かりたければ、これでも読め
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-19.html#%_chap_3
0783デフォルトの名無しさん
2009/06/20(土) 21:24:52SICPのそれはラムダを……合成じゃなくてオブジェクトを……の方だ。
780への解答としては全く不適当。
0784デフォルトの名無しさん
2009/06/20(土) 21:58:21クラスのメンバ変数的なものは、
let 束縛した変数をラムダ(クロージャ)に閉じ込めていくのに
対応しているようなしてないようなそんなようなイメージがある
0785デフォルトの名無しさん
2009/06/20(土) 23:55:58?
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5
>>780
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.100.8004
0786デフォルトの名無しさん
2009/07/24(金) 17:29:22動いてるプログラムを想像すれば良いんだよね?
あと値は全てイミュータブルであることが条件?
よほど規模が大きくないと手続き型より遅くなるのかな?
0787デフォルトの名無しさん
2009/07/24(金) 17:39:03> 関数型の処理ってたくさんのスレッドプールの中で
> 動いてるプログラムを想像すれば良いんだよね?
は?
> あと値は全てイミュータブルであることが条件?
いいえ、副作用がないのです
0788デフォルトの名無しさん
2009/07/24(金) 18:06:46古典的な処理系はコテコテの逐次処理ですよ。
0789デフォルトの名無しさん
2009/07/24(金) 18:22:030790デフォルトの名無しさん
2009/08/09(日) 23:26:50帰らぬ人になってしまいました(ノд<。)゜
0791デフォルトの名無しさん
2009/08/12(水) 15:44:30オフィスアプリもインターネットブラウザも家庭用ゲームもデバイスドライバもOSも作れない欠陥言語の総称。
0792デフォルトの名無しさん
2009/08/12(水) 15:57:15Jack & Dexterとかな。
0793デフォルトの名無しさん
2009/08/12(水) 16:05:47Crash Bandicoot and Jack & Daxter are not written in lisp.
Crash Bandicoot and Jack & Daxter are written in C.
Crash Bandicoot and Jack & Daxter include a lisp interpreter and the AI uses lisp as its scripting language.
0794デフォルトの名無しさん
2009/08/12(水) 16:31:03\
. \
. \ _______
\ r'´ ̄ ̄ ̄  ̄ ̄ ̄`、::. ___
l} 、:: \ヘ,___,_ ______/::.__| .|___________
|l \:: | | |、:.. | [], _ .|: [ニ]:::::
|l'-,、イ\: | | ∧,,,∧ . |::.. ヘ ̄ ̄,/:::(__)::
|l ´ヽ,ノ: | | (´・ω・`) ,l、:::  ̄ ̄::::::::::::::::
|l | :| | |,r'",´ ̄ ̄ ̄ ̄ ̄`ヽ、l:::::
|l.,\\| :| | ,' :::::... ..::ll:::: 言語が完成したら何を作ろうかなあ
|l | :| | | :::::::... . .:::|l:::: そうだ安定したOSを作ろう
|l__,,| :| | | ::::.... ..:::|l:::: その前にFireFoxに対抗できるブラウザだな
|l ̄`~~| :| | | |l:::: やっぱFlashやJavaの動く見栄えのいいブラウザがいいよなあ
|l | :| | | |l:::: そしてゲームも欲しいよな
|l | :| | | ''"´ |l:::: もちろんモンハンやMGSみたいな大ヒットタイトルだよなあ
|l \\[]:| | | |l::::
|l ィ'´~ヽ | | ``' |l:::: ふと気がつくと布団の中にいた
|l-''´ヽ,/:: | | ''"´ |l:::: この脱力感は何なんだろうか
|l /:: | \,'´____..:::::::::::::::_`l__,イ:::: そうか全て夢だったんだ・・・
l}ィ:: | `´::::::::::::::::::::::::::::::`´:::::: いい言語だねって褒められたこと以外は・・・
0795デフォルトの名無しさん
2009/08/12(水) 16:49:36http://discuss.fogcreek.com/joelonsoftware3/default.asp?cmd=show&ixPost=94232&ixReplies=38
"Crash Bandicoot and Jack & Daxter are written in C."
True for Crash Bandicoot, false for Jak & Daxter."
The latter is written *entirely* in a custom language.
The compiler for that language is implemented in Lisp.
0796デフォルトの名無しさん
2009/08/12(水) 17:05:01おお、見落としてた。それじゃあゲームも作れないってのは撤回するよ。
でも俺、Jack & Daxterなんてゲーム知らなかったぞ。
みんな頑張って関数型言語でもっといいゲーム作ってくれ。
ところでwikiにこんなこと書いてあってバロス
GOAL's primary development and maintenance engineer is no longer available to Naughty Dog,
and so they are transitioning to a C++ based pipeline for future projects.
0797デフォルトの名無しさん
2009/08/12(水) 17:17:38http://www.gamasutra.com/features/20020710/white_03.htm
GOAL sucks!
While it's true that GOAL gave us many advantages, GOAL caused us a lot of grief.
A single programmer (who could easily be one of the top ten Lisp programmers in the world) wrote GOAL.
While he called his Lisp techniques and programming practices "revolutionary,"
others referred to them as "code encryption," since only he could understand them.
Because of this, all of the support, bug fixes, feature enhancements,
and optimizations had to come from one person, creating quite a bottleneck.
Eventually GOAL became much more robust, but even now C++ has some advantages over GOAL,
such as destructors, better constructors, and the ease of declaring inline methods.
すまん、自慢のつもりだったんだろうけど、これ今後のネタにさせてもらうわ。
0798デフォルトの名無しさん
2009/08/12(水) 18:03:52>Jack & Daxterなんてゲーム知らなかったぞ。
そもそもLispについて何か言いたいならこのゲームのことくらい聞いたことあるだろ
ってくらいには有名。
ゲーム的にも普通に有名。
今日思い立って関数型言語叩きやろうと思っちゃったんだよね。
ちょっと暇だったし。
大丈夫だよ、夏休みだから。
0799デフォルトの名無しさん
2009/08/12(水) 23:33:01有名なジャックxダクスターですよね、わかります。
0800デフォルトの名無しさん
2009/08/14(金) 12:31:30\
. \
. \ _______
\ r'´ ̄ ̄ ̄  ̄ ̄ ̄`、::. ___
l} 、:: \ヘ,___,_ ______/::.__| .|___________
|l \:: | | |、:.. | [], _ .|: [ニ]:::::
|l'-,、イ\: | | ∧,,,∧ . |::.. ヘ ̄ ̄,/:::(__)::
|l ´ヽ,ノ: | | (´・ω・`) ,l、:::  ̄ ̄::::::::::::::::
|l | :| | |,r'",´ ̄ ̄ ̄ ̄ ̄`ヽ、l:::::
|l.,\\| :| | ,' :::::... ..::ll:::: Haskellが完成したら何を作ろうかなあ
|l | :| | | :::::::... . .:::|l:::: そうだ安定したOSを作ろう
|l__,,| :| | | ::::.... ..:::|l:::: その前にFireFoxに対抗できるブラウザだな
|l ̄`~~| :| | | |l:::: やっぱFlashやJavaの動く見栄えのいいブラウザがいいよなあ
|l | :| | | |l:::: そしてゲームも欲しいよな
|l | :| | | ''"´ |l:::: もちろんモンハンやMGSみたいなメジャータイトルだよなあ
|l \\[]:| | | |l::::
|l ィ'´~ヽ | | ``' |l:::: ふと気がつくと布団の中にいた
|l-''´ヽ,/:: | | ''"´ |l:::: この脱力感は何なんだろうか
|l /:: | \,'´____..:::::::::::::::_`l__,イ:::: そうか全て夢だったんだ・・・
l}ィ:: | `´::::::::::::::::::::::::::::::`´:::::: いい言語だねって褒められたこと以外は・・・
0801デフォルトの名無しさん
2009/08/15(土) 00:05:02http://clean.cs.ru.nl/About_Clean/Platform_Games/body_platform_games.htm
0802デフォルトの名無しさん
2009/08/30(日) 02:37:21並行/並列/分散プログラミングに興味があり、以前からConcurrent Pascal/
Ada/KL1(GHC)などを勉強していました。
最近になって関数型言語にも手を出して触ってみたのですが(実は再挑戦...)、
並行/並列/分散処理記述には、いくつか問題があると感じました。
まずHaskellについて、柔軟な代数的データ型、厳密な型付け、偉大な型推論、
そして遅延評価による柔軟性は素晴らしく、興奮状態です。
ただし、分散処理に関する支援がありません。
並列Haskellはあるようですが、マルチコアやマルチプロセッサ構成には
対応できても、分散環境でいかに実装するのか自分には想像がつきません。
次にErlangですが、並列論理型言語であるKL1(GHC)と、ほとんど同じ
プログラミングモデルで設計されていることに驚きました。型付けの
無い点も(Prologを含めた)論理型言語と同じ性質を備えていると言えます。
Lisp系言語に分散支援を追加して構文糖をかぶせたという印象を持ちました。
そこで冒頭の質問に戻るのですが、システム全体の分散処理は「柔軟」な
Erlangモデルで記述し、各プロセスの受信イベントに対するアトミックな
アクションは「厳密」なHaskellモデルで記述するハイブリッド・プログラミング
モデルが良いのではないかと考えました。
素人考えですから、同様な事は他の人も考えていると思います。
参考になる文献やWeb情報など知っている方がおられたら教えてくださいませ。
0803名無しさん@そうだ選挙に行こう
2009/08/30(日) 08:47:190804名無しさん@そうだ選挙に行こう
2009/08/30(日) 09:07:44Glasgow Parallel Haskell(GPH)とかかな。
0805名無しさん@そうだ選挙に行こう
2009/08/30(日) 09:14:57反射的にキモいって言っちゃうよな。
ロジックで太刀打ちできない悔しさは、キャラクター設定で取り返せ! みたいな。
0806名無しさん@そうだ選挙に行こう
2009/08/30(日) 12:57:320807名無しさん@そうだ選挙に行こう
2009/08/30(日) 13:59:06気のせいかもしれないが
0808デフォルトの名無しさん
2009/09/02(水) 13:53:08見かけます。
PerlやRubyでWeb系を書いているのですが、どの関数型言語を学ぶのが適切だと思われますか?
0809デフォルトの名無しさん
2009/09/02(水) 13:58:53後はやりたいことをやればいいんで、
人の言うことなんか気にしないでいい。
関数型言語をやる前に、処理系がコンパイラ主体の言語、
Java, C#, C++をやった方がいいと思うしね。とっつきやすいから。
関数型言語はその後でもいいんじゃない?
0810デフォルトの名無しさん
2009/09/02(水) 16:49:21処理系がコンパイラ主体の言語、なんとなれば、とっつきやすいから。
とはちょっと変わったレスのように感じますが、そう読んでよろしい
のでしょうか。
0811横レス
2009/09/02(水) 19:47:12警告・エラーの嵐で面食らうと思う
ステップ専用(実用にしない)コンパイラ系手続き言語なら単純で時間かからないCがいいんじゃない?
(FortranでもPascalでもいいけどさ)
またはスクリプト系なんちゃって関数型言語でLispとか
0812デフォルトの名無しさん
2009/09/02(水) 20:46:59HaskellやOCamlの日本語の本でも読んでみてから
Rubyでコンビネータでも書いてみれば勉強になるんじゃね
0813デフォルトの名無しさん
2009/09/02(水) 21:10:31実用アプリってライブラリの組み合わせみたいな側面あるじゃん。
0814デフォルトの名無しさん
2009/09/02(水) 23:08:050815デフォルトの名無しさん
2009/09/02(水) 23:13:210816デフォルトの名無しさん
2009/09/02(水) 23:27:25関数型言語の勉強ならOCamlがおすすめ。型推論の便利さにハマってくれ。
0817デフォルトの名無しさん
2009/09/02(水) 23:45:39関数型ならjavascriptでもいいと思うんだがなあ。
0818デフォルトの名無しさん
2009/09/03(木) 00:18:45カリー化も補助関数書いて実現することはできなくはないけど力業だし
0819デフォルトの名無しさん
2009/09/03(木) 00:50:450820デフォルトの名無しさん
2009/09/03(木) 01:02:51確かに見てくれはOCamlの弱点だと思うけど、実用的だし生成されるバイナリも
高速だから受け入れてる。シンタックスで言えばSMLの方がずっといいね。
0821デフォルトの名無しさん
2009/09/03(木) 03:55:20>でも実際の所、実用アプリを書こうと思ったらCで書く方がライブラリ関係で悩まなくて済むんだよな。
>実用アプリってライブラリの組み合わせみたいな側面あるじゃん。
OCaml使ってるけどOpenGLですら古いライブラリしかねえや。
っつうか、Cとのインターフェースをもっと簡単に書ければいいのに。
0822デフォルトの名無しさん
2009/09/03(木) 07:17:350823デフォルトの名無しさん
2009/09/03(木) 07:58:12ファンクタも多相バリアントもないじゃんか
classまわりは別物だし
0824デフォルトの名無しさん
2009/09/03(木) 08:05:280825デフォルトの名無しさん
2009/09/03(木) 08:31:14Haskell.NETみたいに。
0826デフォルトの名無しさん
2009/09/03(木) 09:30:55突っ込み所多すぎ
0827デフォルトの名無しさん
2009/09/03(木) 10:44:10SDL導入まではHaskellのほうが簡単…
「俺様がWin向けにコンパイルできないのでlinux導入して試してね♪」とは言えないしなーorz
>>823
そこはあまり問題にならないだろう。
位置付けとしては関数型言語を扱えない人のための関数型言語だし。
F#で最も問題なのは型推論が貧弱なことだと思う
0828デフォルトの名無しさん
2009/09/03(木) 10:45:05visual studio 2010 βダウンロードしてみろよw
0829デフォルトの名無しさん
2009/09/03(木) 10:46:030830デフォルトの名無しさん
2009/09/03(木) 11:01:37MonadiusレベルならGLUTで作れてしまうしな
0831デフォルトの名無しさん
2009/09/03(木) 11:08:460832デフォルトの名無しさん
2009/09/03(木) 11:43:38>本格的なゲーム
そんなことは望んでないさ
社内布教用デモのゲームが作りたいんだ
ゲームの会社で関数型言語を広めるには要点が押さえられてるsdlがいいかなと
そして、初心者向けにはhaskellよりocamlのほうが入ってもらいやすいだろうと(根拠なし)
それでocaml+sdlの組み合わせにしたかった。
sdlなしだと入力関係で変なコード書かざるをえないし、他の部分も一通り揃えるとデモには大げさなボリュームになるし。
0833デフォルトの名無しさん
2009/09/03(木) 12:37:330834デフォルトの名無しさん
2009/09/03(木) 12:42:04ゲームで関数型言語の良さを示すのは難しいんじゃないか?
どうせ副作用バリバリのコードになるんだし。だったら、内製ツールがこんなに
楽に作れますよ、強力な型チェックでつまらないバグも避けられるし、みたいな
方向で行った方がいいような。
0835デフォルトの名無しさん
2009/09/03(木) 13:30:40その手のものは「rubyのほうがいいや」と言われて終了なので
"実務で使うと"という視点から離れたところから始めたかった。
だらだらとスレチならべてごめん
消えます
0836デフォルトの名無しさん
2009/09/03(木) 19:51:12SDL時代遅れなの?
Linux系でも使えるツールキットで新しくて人気なのって何かあるの?
SDLとAllegroくらいしか知らないんだが。
>>834
* ゲーム
* GUIプログラム
* エンコーダとか
* OS/デバイスドライバを作ろうとする
は関数型言語でやらないほうがいいな。やりたいならいいと思うけど。
0837デフォルトの名無しさん
2009/09/03(木) 21:53:020838デフォルトの名無しさん
2009/09/03(木) 23:37:43> SDL時代遅れなの?
> Linux系でも使えるツールキットで新しくて人気なのって何かあるの?
> SDLとAllegroくらいしか知らないんだが。
http://www.devmaster.net/engines/list.php?fid=5&sid=1
検索したら100個くらい出てきた。
0839デフォルトの名無しさん
2009/09/04(金) 06:42:160840デフォルトの名無しさん
2009/09/04(金) 08:03:260841デフォルトの名無しさん
2009/09/04(金) 08:10:39>>840
OpenGLを使う場合はC++。
OCamlのlablglはサポートしてる関数が少なすぎて遊びの小物作る以外には
使い物にならなかった。
0842デフォルトの名無しさん
2009/09/04(金) 09:02:27Rubyだとちょい処理速度がきついツールあたりなら
けっこうOCamlの速度がアピールになる気がする
ゲームの場合、グラフィックとかはC++にしてAIとか制御を
OCaml で書くのはどうだろう。この間の OCaml Meeting で
C 側から OCaml のランタイム簡単に呼べるようなこと言ってたし。
0843デフォルトの名無しさん
2009/09/04(金) 19:27:05まずここの後半部を和訳してくれねえとどうにもならねw
0844デフォルトの名無しさん
2009/09/04(金) 19:37:400845デフォルトの名無しさん
2009/09/04(金) 19:38:450846デフォルトの名無しさん
2009/09/04(金) 21:03:160847デフォルトの名無しさん
2009/09/04(金) 21:08:590848デフォルトの名無しさん
2009/09/04(金) 21:23:16> 専門用語多すぎてわけわかんねえよw
IT土方乙。巣に帰れよ。
0849デフォルトの名無しさん
2009/09/04(金) 23:05:38知らないことだらけなのにさも物知りで自分が正しいかのように振る舞う連中の事なんだなぁ。
0850デフォルトの名無しさん
2009/09/05(土) 07:33:230851デフォルトの名無しさん
2009/09/05(土) 08:48:370852デフォルトの名無しさん
2009/09/05(土) 21:38:42このスレみて絶望した
プログラミングを学ぶことが下をみて悦に浸るためのものになっている。
0853デフォルトの名無しさん
2009/09/05(土) 22:43:14http://labs.yaneu.com/20090905/
0854デフォルトの名無しさん
2009/09/06(日) 06:42:420855デフォルトの名無しさん
2009/09/06(日) 16:16:56http://glcaml.sourceforge.net/
0856デフォルトの名無しさん
2009/09/06(日) 16:25:22サンクス。と言いたいところだが3.xがサポートされてないし2008年で更新が
止まってるじゃん。1.1相当のlablglよりははるかにマシだけどさ。
0857デフォルトの名無しさん
2009/09/06(日) 16:49:51それ、Windowsで動かないからウンコだよw
0858デフォルトの名無しさん
2009/09/06(日) 16:58:46Ozっていうキモい記法のマイナー言語でよければこんなのが
『コンピュータプログラミングの概念・技法・モデル』
上記の本のML系言語(Alice)の実装↓
http://codepoetics.com/wiki/index.php?title=Topics:CTM_in_other_languages:Alice_ML
0859デフォルトの名無しさん
2009/09/06(日) 17:16:42嘘乙
GLCaml has been tested on the following platforms
1. Windows XP, with the MinGW distribution of the Ocaml compiler
2. Windows 2000, with the MinGW distribution of the Ocaml compiler
3. Ubuntu Linux (6.06), with the AMD64 version of the Ocaml compiler
4. Mac OS X
5. Solaris 5.10
0860デフォルトの名無しさん
2009/09/06(日) 17:25:550861デフォルトの名無しさん
2009/09/06(日) 17:26:38>>802
Scala
0862802
2009/09/06(日) 17:55:13さっそく調べてみたところ、Wikipediaに言語の解説と書籍の詳しい目次がありました。
ぐぉ、求めていたのはコレだぁ!という感じです。
マイナー言語は大好きですし、開発環境としてEmacsを、GUIとしてTkを採用も好感触。
高価な書籍で読解には苦労しそうですが、購入して挑戦してみます。
ご紹介ありがとうございました。
0863デフォルトの名無しさん
2009/09/06(日) 18:35:35JoCamlはどうですか
http://jocaml.inria.fr/
Join計算(アクターと同じ非同期メッセージパッシング)という基礎があり、並列も並行もいける
OCamlと互換性もある
0864デフォルトの名無しさん
2009/09/06(日) 18:39:52>>857じゃないけど
最新版でコンパイルできない以上動くと言われても古い情報ですねとしか
0865デフォルトの名無しさん
2009/09/06(日) 18:49:34kwsk
0866デフォルトの名無しさん
2009/09/06(日) 18:54:44CLispはCと同じくらい早いらしいし
0867デフォルトの名無しさん
2009/09/06(日) 18:56:00Scalaだろ
0868デフォルトの名無しさん
2009/09/06(日) 18:56:50別にCと同じぐらい速くはない
SBCLやCMUCLがCと同じぐらいというのならまだわかる(それも言い過ぎの感があるが)
0869デフォルトの名無しさん
2009/09/06(日) 18:58:23実行にはJavaVMが必要という致命的な欠陥がある
0870デフォルトの名無しさん
2009/09/06(日) 19:04:41むしろ、いろんなプラットフォームで実行できるという利点がある
0871デフォルトの名無しさん
2009/09/06(日) 19:06:15Scalaにはアクターはあるけど、Haskellはない
部分的にも無いぞ
遅延でもないし、純粋でもないし、型安全ですらない
0872デフォルトの名無しさん
2009/09/06(日) 19:18:37自動的な型推論とか、高階関数とかパターンマッチングがある
純粋ではないが、副作用のない書き方がやりやすく、推奨されてもいる
さらにLazy valもある
暗黙の型パラメータはHaskellの型クラスに触発されたなど、
作者自身がHaskellに影響を受けたと語ってもいる
0873デフォルトの名無しさん
2009/09/06(日) 19:26:14その説明で到達できるのはOCamlまで
Haskellまでは行くのは飛躍
0874デフォルトの名無しさん
2009/09/06(日) 19:28:080875デフォルトの名無しさん
2009/09/06(日) 19:30:27LispでもWindowsプログラミングやGUIやるのは結構きつい。Webやデーモンならともかく。
商用のはそれなりに使えても、結構値段する品。
0876デフォルトの名無しさん
2009/09/06(日) 19:34:22やってみればわかる。汚染されてないまっさらな環境つくりなおしてもダメだった。
古いplatformsdkがあればいけるんだろうか
0877デフォルトの名無しさん
2009/09/06(日) 19:43:56余裕でControl.Concurrent
0878デフォルトの名無しさん
2009/09/06(日) 19:45:49JavaVMは遅い、バグが多い、どのコンピュータにも入っている保障がない
0879デフォルトの名無しさん
2009/09/06(日) 19:48:40Haskellの吐くバイナリの遅さほどではないかと
0880デフォルトの名無しさん
2009/09/06(日) 19:56:080881デフォルトの名無しさん
2009/09/06(日) 20:03:58http://d.hatena.ne.jp/mzp/20090123/sh
scalaの酷さときたらw
0882デフォルトの名無しさん
2009/09/06(日) 20:10:53MacのScalaは何かがおかしいのでおいといて、Haskell酷すぎだろw
何かがおかしいわけじゃなくて正常でこれだからなw
0883デフォルトの名無しさん
2009/09/06(日) 20:15:50C>Java>Scala>Haskell>C#>OCaml>Lisp>>>>>Erlang>>>>Python>Ruby
0884デフォルトの名無しさん
2009/09/06(日) 20:19:42インタプリタでの比較だし原理上そんなもんだろと思うが
0885デフォルトの名無しさん
2009/09/06(日) 20:22:28それにしても、Haskellの1分とかScalaの9分とかいうのは
ちょっとおかしいけど
0886デフォルトの名無しさん
2009/09/06(日) 20:22:470887デフォルトの名無しさん
2009/09/06(日) 20:23:31分??単位読み間違ってるぞ
0888デフォルトの名無しさん
2009/09/06(日) 20:26:07下の生データを見るとHaskellは10秒、Scalaは1分30秒ですね
0889デフォルトの名無しさん
2009/09/06(日) 20:27:020890デフォルトの名無しさん
2009/09/06(日) 20:39:44Macでは云々と言っているけど、結局の所、不安定ということでしょ。
0891デフォルトの名無しさん
2009/09/06(日) 20:41:30上のだってJVMの問題じゃなかろうに
0892デフォルトの名無しさん
2009/09/06(日) 20:42:31JVMが信用できないとかw
0893デフォルトの名無しさん
2009/09/06(日) 21:16:54俺には何の問題かわからないんだけど、JVMの問題でなかったら原因は何なんだ?
0894デフォルトの名無しさん
2009/09/06(日) 21:26:570895デフォルトの名無しさん
2009/09/06(日) 21:39:08Scalaは>>863にあるJoin計算に基づいた言語だよ。
アクターのクラスライブラリも持っているけど、
それはJoin計算のプログラミングパラダイムで記述されている。
Join計算やるなら>>863の方がこのスレにふさわしい。
0896デフォルトの名無しさん
2009/09/06(日) 21:39:590897デフォルトの名無しさん
2009/09/06(日) 21:43:590898デフォルトの名無しさん
2009/09/06(日) 22:43:40導入したころはJava全盛時代だったし、その全盛時代も宣伝によって作られた虚構の流行でしかなかったわけだけど、
今の時勢に惰性でなくJavaでシステムを作ろうという人はあんまりいないと思うよ。
Javaが思ったより安定でなく問題だらけだということが知れ渡った結果だと思うけど。
0899デフォルトの名無しさん
2009/09/06(日) 22:44:44下位互換なり
Full compatibility with OCaml not only means that we can write such programs starting from existing, sequential, source code in OCaml, but it also means that the existing source code may call external libraries that need not be re-compiled.
0900デフォルトの名無しさん
2009/09/06(日) 22:50:38汎用機でCOBOLでも使えってか。
0901デフォルトの名無しさん
2009/09/06(日) 22:53:12業界を知らなすぎる
今は、Javaは枯れた安定した技術として惰性で使われてるものの代名詞だよ
0902デフォルトの名無しさん
2009/09/06(日) 22:56:40まさにその通り。
Javaに移行せずCobolを使うというのがトレンド。
>>901
日本のソフトウェア会社の社長や技術者と話すことはよくあるし、「あなたJavaできる?」って聞かれる事もよくある。
でもそれは日本が遅れてるだけw
アメリカのソフトウェア会社の人と話をしていると「プッw Java?」って感じだよ。
0903デフォルトの名無しさん
2009/09/06(日) 23:14:38ほうほう、そのアメリカさんは
何を使ってるって言ったら「クール!」って言ってくれんの?
COBOL?
0904デフォルトの名無しさん
2009/09/06(日) 23:15:30いや、日本が遅れてるとか言われても別にJavaが不安定なことにはならんわけでw
むしろ、お国柄として、安定さを求めるのが日本なんでw
0905デフォルトの名無しさん
2009/09/06(日) 23:16:11新しくてマイナーな言語なら全部クール
0906デフォルトの名無しさん
2009/09/06(日) 23:17:480907デフォルトの名無しさん
2009/09/06(日) 23:24:19不安定だからJavaから離れているのでは。
0908デフォルトの名無しさん
2009/09/06(日) 23:27:38V2Cとか10時間ぐらい放置して再度使おうとすると1秒ぐらい反応帰ってこないのはなぜだ?
0909デフォルトの名無しさん
2009/09/06(日) 23:31:06http://www.google.co.jp/trends?q=java%2C+cobol&geo=us&geor=all&date=all
日本
http://www.google.co.jp/trends?q=java%2C+cobol&ctab=0&geo=jp&geor=all&date=all&sort=0
どちらも緩やかに下降してるがまだまだ強いという傾向
別に大差ない
しいて言えば、日本はCobolが強い
0910デフォルトの名無しさん
2009/09/06(日) 23:34:540911デフォルトの名無しさん
2009/09/06(日) 23:36:330912デフォルトの名無しさん
2009/09/06(日) 23:38:57新規開発と保守の場合は別だと思うよ。
そのグラフは両方をごっちゃにしてる。
0913デフォルトの名無しさん
2009/09/07(月) 00:53:460914デフォルトの名無しさん
2009/09/07(月) 00:58:140915デフォルトの名無しさん
2009/09/07(月) 01:00:34Scalaは関数型言語としても普通にOCamlより良い言語なのに
0916デフォルトの名無しさん
2009/09/07(月) 01:18:250917デフォルトの名無しさん
2009/09/07(月) 01:22:230918デフォルトの名無しさん
2009/09/07(月) 01:44:570919デフォルトの名無しさん
2009/09/07(月) 01:48:10混じりっけ無いものに惹かれるものなのさ
0920デフォルトの名無しさん
2009/09/07(月) 01:48:56そこまで純粋にこだわっても、結局実用的じゃない
0921デフォルトの名無しさん
2009/09/07(月) 01:50:210922デフォルトの名無しさん
2009/09/07(月) 01:51:270923デフォルトの名無しさん
2009/09/07(月) 01:54:320924デフォルトの名無しさん
2009/09/07(月) 02:03:34型推論で記法の統一性もない言語が美しいとはお笑いw
0925デフォルトの名無しさん
2009/09/07(月) 02:05:58数学屋はこれだから
向かい合った男女が一秒ごとにその距離を半分ずつ近づけたときにどのようになるかと言う命題を思い出したぜ
0926デフォルトの名無しさん
2009/09/07(月) 02:15:42通常構文とdo式の存在は言うに及ばず、節操なく旧態依然とした
C言語から構造体、列挙体、共用体、typedefを取り込んだような
代数的データ型、モジュールだの型コンストラクタだのと、まるで
統一されていない分類システム、集合論で飽き足らず圏論にまで
手を出さないとどうしようもない理論的バックグラウンドにいたるまで
雑然としている
ForthやSmalltalkのシンプルさと比べて雲泥の差
0927デフォルトの名無しさん
2009/09/07(月) 02:17:110928デフォルトの名無しさん
2009/09/07(月) 02:24:39コンピューター言語という社会インフラを支える技術には無機質で堅牢な基盤が必要
その基盤は、λ計算、論理学、圏論
「オブジェクトで統一されている」とか「書いていると楽しい」とか、どんだけお遊びなんだ
0929デフォルトの名無しさん
2009/09/07(月) 02:28:07支えているのは、圏論よりも、「オブジェクトで統一されている」という
お遊びのほうのようだよw
0930デフォルトの名無しさん
2009/09/07(月) 02:29:450931デフォルトの名無しさん
2009/09/07(月) 02:32:49思い込ませるための洗脳道具
0932デフォルトの名無しさん
2009/09/07(月) 02:52:02かなり違和感があるんだけど
0933デフォルトの名無しさん
2009/09/07(月) 02:54:21グロタンディックはやっぱすげーと思う。
0934デフォルトの名無しさん
2009/09/07(月) 02:54:530935デフォルトの名無しさん
2009/09/07(月) 02:58:11なぜ、Prologじゃ、だめなんだ?
0936デフォルトの名無しさん
2009/09/07(月) 02:58:18グロタンディークは凄いけど、別に何の関係もない件
圏論作ったのはアイレンベルグとマックレーンだし
0937デフォルトの名無しさん
2009/09/07(月) 03:00:03Prologは失敗した言語というイメージがついてるからな
圏論ブランドもないし
でも本当はHaskellなんかよりもよっぽど凄い言語なんだがな
0938デフォルトの名無しさん
2009/09/07(月) 03:42:21古い → 新しい
Fortran、Algol → C、Pascal → Smalltalk、C++、Perl → Python、Ruby、Java(今ここ) → D、C#、F#、Haskell、Scala → Lisp
0939デフォルトの名無しさん
2009/09/07(月) 03:52:21一番左にもLisp入れておくべきかと
0940デフォルトの名無しさん
2009/09/07(月) 08:40:090941デフォルトの名無しさん
2009/09/07(月) 08:49:44本気で信じてる?それともお決まりのネタを言ってるだけ?
S式なんてしょせん劣化λ式でしょ
最後に全ての言語がS式に戻ってくる訳ないじゃん
背景理論がある訳でもないし、型がある訳でもないし、
データ構造が書きやすい訳でもないし、特殊な評価戦略って訳でもないし
なんとなく試行錯誤して作った古くさい言語の一つにしか見えない
0942デフォルトの名無しさん
2009/09/07(月) 08:56:270943デフォルトの名無しさん
2009/09/07(月) 09:05:460945デフォルトの名無しさん
2009/09/07(月) 22:24:190946デフォルトの名無しさん
2009/09/07(月) 22:32:22自由自在にできるんじゃないか。S式より便利な記法がでてきたら喜んで乗りかえると師匠はいってた。
俺は中置記法に毒されきっててだめだったけど…
0947デフォルトの名無しさん
2009/09/07(月) 23:20:360948t ◆SQYzTdSfUA
2009/09/08(火) 00:36:23「中立なS式」の中立がわからん。何にでも化けられるという意味だろうか
λ式でも利用者次第で理論を適用したり、データ構造を表現したり、評価戦略をかえたり
自由自在にできるんじゃないか?
じゃぁ、S式とλ式の何が違うのかって言うと、S式は関数適用とタプルをごっちゃ混ぜにした
この罪は大きい
このせいでS式に関連する構文と意味の両面が破綻しているといってもいい
一方λ式は変数とλ抽象と関数適用が厳密に区別できて、理論的にも扱いやすい
どう考えてもS式はλ式の劣化版
>S式より便利な記法がでてきたら喜んで乗りかえると
λ式に乗り換えてもらえるよう奨めておいてください
0949デフォルトの名無しさん
2009/09/08(火) 00:45:04区別されてたら所詮DSLを作るときに制約となる
0950デフォルトの名無しさん
2009/09/08(火) 00:47:54ラムダ式とやらで、それができるのか
0951t ◆SQYzTdSfUA
2009/09/08(火) 01:32:26やや意味分からん
関数適用とタプルが区別されていたらマクロが作りにくい?
そういう例が思い付かない
(defmacro foo () '(+ 1 2))とか書いても心の中で明確に関数適用は意識している
>>950
ここで「できる」「できない」の話題を持ち出すのはどうか
λ式はチューリング完全だから答えは「できる」
0952デフォルトの名無しさん
2009/09/08(火) 01:38:42チューリング完全なのはλ計算であってλ式ではないだろ。
少なくともS式と対比しうる限りでのλ式ではない。
構文論と意味論はちゃんと区別せんと。
0953t ◆SQYzTdSfUA
2009/09/08(火) 01:54:17S式の上にどういう簡約が定義されいてLispと呼ばれているのか存じませんが、
たぶんLispはForthやPrologを表現できるのでしょう
一方で、λ式を簡約する手順であるλ計算(α簡約、β簡約)はチューリング完全なので、
ForthやPrologがプログラミング言語である限り、λ計算で表現可能です
....こんな感じ?
0954デフォルトの名無しさん
2009/09/08(火) 02:35:570955デフォルトの名無しさん
2009/09/08(火) 02:45:250956デフォルトの名無しさん
2009/09/08(火) 04:15:22「表現できる」の意味を完全に捉え違えてる
君の言う表現できるは、単に「評価を行ったときに
等価とみなせるλ式を定義できる」といってるに過ぎないが、
「Lispはプログラミング言語〜〜をS式上に表現できる」と
言ってるときの意味は、「S式であるという制約を除いて、
言語〜〜のソースそっくりに書かれたソースファイルをLispとして
実行できる」の意味
で、この意味の「表現」だと、λ式はチューリング完全ではあるが、
単なるCFGなので、正則表現と同じクラスで表現された
シンボルを適切に表現することができない
0957デフォルトの名無しさん
2009/09/08(火) 06:56:32> (defmacro foo () '(+ 1 2))とか書いても心の中で明確に関数適用は意識している
λ式で書けよ。
どんだけS式が好きなんだよ。
0958デフォルトの名無しさん
2009/09/08(火) 16:18:53Ocamlにオーバーロードとメッセージパッシングを追加して
OpenGL3とかアクターとかモナドもサポートする非JVMで非S式な言語を
日本人が作ればいいんだな!
0959デフォルトの名無しさん
2009/09/08(火) 18:15:00よろしくおねがいします
0960t ◆SQYzTdSfUA
2009/09/08(火) 20:45:49>S式であるという制約を除いて、言語〜〜のソースそっくりに書かれたソースファイルをLispとして 実行できる
確かにそれはその通り
でも、例えばPrologの [X|Y] <- [a, b, c]. なんていう一行をそのままLispで真似できる訳じゃない
Lispで色々な言語の真似ができるのは高々その言語の抽象構文木まで。そうしないとS式じゃなくなる
さらに、マクロなんていうのも実態はS式で書かれたS式からS式への変換関数
だとすれば、λ式で色々な言語の抽象構文木を書いて、
そのλ式から別のλ式を出力する変換関数をλ式で書いてλ評価器に通せば、
S式+Lispでやっている事と全く同じ事ができる
S式+Lispはすごく特別な物でものでもなんでもない
というか、最後のこれ
>単なるCFGなので、正則表現と同じクラスで表現された
>シンボルを適切に表現することができない
の意味がわからん
0961デフォルトの名無しさん
2009/09/08(火) 21:05:490962t ◆SQYzTdSfUA
2009/09/08(火) 21:10:38ええ、本格的に始めたのは高校2年生くらいの時でしょうか
あっ、私は永遠の18歳なのでプログラミング始めてちょうど1年くらいですね
0963デフォルトの名無しさん
2009/09/08(火) 22:00:120964デフォルトの名無しさん
2009/09/08(火) 22:43:12自己紹介乙
0965デフォルトの名無しさん
2009/09/08(火) 23:34:16> で、この意味の「表現」だと、λ式はチューリング完全ではあるが、
> 単なるCFGなので、
俺もこの意味がわからん。ラムダ計算はチューリング完全だがラムダ式は
CFGだと言いたいのだろうが、肝心な部分だから気をつけて書かないと。
0966t ◆SQYzTdSfUA
2009/09/08(火) 23:43:26リードマクロも評価器が持っている文字列からS式への単なる変換関数
(しかも無理矢理Lispで閉じようとして物事を100倍わかり難くしてくれやがる)
S式+S式評価器にできてλ式+λ評価器にできない事なんてひとつもない
S式やLispが何か神秘的で特別なものだという風潮があるのが大っ嫌い
要は型無しλ計算の劣化版の上でごにょごにょしてるだけじゃんか
0967デフォルトの名無しさん
2009/09/08(火) 23:51:35なんつーか、最近は何かを叩けばカッコイイと勘違いしてる人をよく見かけるけどさ、
アホが際立つだけだと思うよ。Ocamlを学ぶとかもうちょっと有意義な事でもやれば?
0968デフォルトの名無しさん
2009/09/09(水) 00:02:44最初(>>941)の感じでは、もう片方は「他のプログラミング言語群」に思えたけど、
現在のこの「偉大なるラムダ式様」祭り上げモードにおいては、それが見えてこない。
彼はいま、Lispをどのプログラミング言語と比べてるの?
0969デフォルトの名無しさん
2009/09/09(水) 00:10:050970デフォルトの名無しさん
2009/09/09(水) 00:12:380971デフォルトの名無しさん
2009/09/09(水) 00:18:15あーゆう芸風が流行ってんの?
0972デフォルトの名無しさん
2009/09/09(水) 00:19:460973デフォルトの名無しさん
2009/09/09(水) 00:22:03相手が最もカッコ悪くなるポイントを狙って叩くことで相対的にカッコイイという
意味ではまあ割と合理的な行動だと思うよ
0974デフォルトの名無しさん
2009/09/09(水) 00:24:47それが言いたいなら尚のこと、他のプログラミング言語の話を始めないことには
何も展開しないよなぁ。
たとえば、彼の「型無しλ計算の劣化版の上でごにょごにょしてるだけ」というのを
全面的に通すとしても、他のプログラミング言語のパワーを掘り下げて持ち上げないことには、
彼の嫌いな風潮はちっとも揺るがない。
だって、Lispの特徴を表現する言葉のグレードをいくら頑張って下げても、その風潮は
「そして、それすらできない他言語」って続けるだけだもの。
「型無しλ計算の劣化版の上でごにょごにょする程度の能力を持つLispと、
それさえ出来ない他言語」
ほらね。全っ然、彼の嫌いな風潮をやっつけたことになってない。
0975デフォルトの名無しさん
2009/09/09(水) 00:28:52単なる与太話に過ぎないだろ。
0976デフォルトの名無しさん
2009/09/09(水) 00:29:57知的でカッコイイのではないだろうか
0977デフォルトの名無しさん
2009/09/09(水) 00:41:300978デフォルトの名無しさん
2009/09/09(水) 00:41:480979デフォルトの名無しさん
2009/09/09(水) 00:52:07http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/code/syntax/haskell/src_205.tgz
これならムカつく Lisp と最近うざい Haskell を同時に叩けて >>941 大満足かつ知的に見えるんじゃないか
所詮S式をつかって静的型付けを実装してごにょごにょするだけじゃんかーって
0980t ◆SQYzTdSfUA
2009/09/09(水) 01:16:48>>974
あぁ、やっぱり劣化は余計でした
優劣が主題じゃないんです
私が言いたいのは、S式やLispは歴史もあるしハッカーなイメージである種特別視したくなるけど、
コンピューターサイエンス(?)の枠組で冷静に捉え直す視点を持つべきだという事です
本当はLispに留まらず、言語に関係すること全部です(特に"オブジェクト指向"とかも)
λ計算をはじめ、計算論、オートマトン、型理論、述語論理、圏論...
道具立ては揃っています
これらの言葉を借りて捉え直せば、立ち位置が分かって、クリアな議論ができるようになるはずです
0981デフォルトの名無しさん
2009/09/09(水) 01:51:260982デフォルトの名無しさん
2009/09/09(水) 02:47:07じゃあこの辺から捉え直してみようか
http://www-formal.stanford.edu/jmc/recursive/recursive.html
0983デフォルトの名無しさん
2009/09/09(水) 02:51:15>S式やLispは歴史もあるしハッカーなイメージである種特別視したくなるけど、
誰もLispやS式を特別視なんてしてないと思うけど。
素朴で原始的で副作用があるけど、単純さゆえの利点も認めている。
>道具立ては揃っています
>これらの言葉を借りて捉え直せば、立ち位置が分かって、クリアな議論ができるようになるはずです
では、まず>>980からの提案をドーゾ
0984デフォルトの名無しさん
2009/09/09(水) 07:49:17>[X|Y] <- [a, b, c]. なんていう一行をそのままLispで真似できる訳じゃない
(<- ([ (| x y)) ([ a b c))
0985t ◆SQYzTdSfUA
2009/09/09(水) 08:04:27色々あり得ますし、無意識にやってたりします
"S式は劣化λ式"というのも私がS式を考える上で捉え直した視点です
このような考え方はしたことが無かったという人もいるはずです
「素朴で原始的で副作用がある」というのも立派な捉え直しだと思います
「素朴で原始的」という表現は、Lispが何か基礎となる理論の上に構築されている訳ではないと暗に言っていますし、
「副作用がある」という特徴も純粋関数型言語(ひいては型付きλ計算)からの言葉で捉え直しています
少なくとも>>982で紹介された文章には一度もside effectsという言葉は出てきません
ここの諸氏にとってはあまりに当り前の事かもしれませんが、
結構大事な事だと思います
0986デフォルトの名無しさん
2009/09/09(水) 10:35:200987デフォルトの名無しさん
2009/09/09(水) 11:01:12λ式=厳格な計算モデル
Lisp=プログラムとデータが共にS式である言語の総称
0988デフォルトの名無しさん
2009/09/09(水) 11:22:020989デフォルトの名無しさん
2009/09/09(水) 11:25:50テンプレ改良案ありましたらどうぞ。
0990デフォルトの名無しさん
2009/09/09(水) 13:03:17>"S式は劣化λ式"というのも私がS式を考える上で捉え直した視点です
捉え直すことはいいんだけどさ、「劣化」という表現はいかがなものかと。
純関数型言語の視点で、副作用を認めている"OCamlは「劣化」Haskell"という表現もできてしまう。
OCamlが処理効率や柔軟性を考慮して副作用を認めたことは>>985も分かっていると思うけど、
それを「劣化」と表現しないでそ。
Lisp言語も同様だよ。Lispはλ式という理論を元に実装している。ただし、言語処理系を実装した
当時のハードウェア性能(処理効率)を考慮してS式というデータ構造を採用し、副作用も認めた。
でも、それを「劣化」と表現するのは先人であるマッカーシーに失礼だし、
そういう発想は物事を一面でしか捉えられていない、と自分は考えるよ。
>ここの諸氏にとってはあまりに当り前の事かもしれませんが、
>結構大事な事だと思います
大事な事というのは分かるんだけどさ、で、それがどうしたの?としか言えないなぁ....。
実際、オイラもHaskellを習い始めてからCやRubyのプログラミングスタイルに変化が表れたことを
自覚している。ソフトウェア設計(あるいはプログラミング)という行為を、(理論を背景にして)
より抽象的に、より形式的に実践しようとすることは大切だし、それを多くの人に広めたい。
でも、土方仕事とも言われる現実のIT産業が、(物理学/解析学を土台とする土木/建築産業のように)
形式的仕様記述を基盤となるよう変化する(あるいはIT業界全体が再構築される)のは、
理論の良さだけでは無理があると思うんだよね。それは多分に(教育を含んだ)文化的な移行だから。
それを促すことができる>>985からの良い提案があれば、聞いてみたいんだけど。
0991デフォルトの名無しさん
2009/09/09(水) 13:16:35っていうのを、食らった突っ込みに合わせて微調整してまで
生き残ろうとする必要無いと思うんだけどな。
それをやり過ぎて、もはや>>941とか読み返すと
「言いたいことと言うことがあまりにも違う変な人」
になっちゃってる。
0992デフォルトの名無しさん
2009/09/09(水) 13:28:43関数型言語 part V
関連スレ
Lisp Scheme Part27
http://pc12.2ch.net/test/read.cgi/tech/1248657331/
関数型言語ML (SML, OCaml, etc.), Part 6
http://pc12.2ch.net/test/read.cgi/tech/1245017721/
関数型プログラミング言語Haskell Part11
http://pc12.2ch.net/test/read.cgi/tech/1252382593/
Emacs Lisp 3
http://pc12.2ch.net/test/read.cgi/tech/1191875993/
0993デフォルトの名無しさん
2009/09/09(水) 13:34:22関数型言語Part5
http://pc12.2ch.net/test/read.cgi/tech/1252470706/
0994デフォルトの名無しさん
2009/09/09(水) 13:37:50多重帰納関数を素直に表現したら、データと制御は同一に扱う必要がでてこないかな。
0995デフォルトの名無しさん
2009/09/09(水) 13:56:42関数型言語が見通しよく感じるのは、小学校から少なくとも高等学校までの
算数-数学の素養の上に立ってのこと。1000時間を超す授業時間を掛けている。
一方いくらかの手続き型言語は幼稚園の学芸会のプログラムレベルでそういう
意味での学習時間はほとんどゼロ。公平な話ではない。
0996デフォルトの名無しさん
2009/09/09(水) 14:04:29高校数学って具体的にはどれ?
0997デフォルトの名無しさん
2009/09/09(水) 14:10:23といっても今の高校での教え方だと、単に任意の実数が入る箱として
方程式のテクニックを教えてるだけだから、少々微妙だが。
0998デフォルトの名無しさん
2009/09/09(水) 14:10:32すぐに思いつくのは関数の概念と帰納法だな
0999デフォルトの名無しさん
2009/09/09(水) 14:23:201000デフォルトの名無しさん
2009/09/09(水) 14:24:4210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。