アカウント名:
パスワード:
捨てるために読めないとダメとかそんな感じじゃないのか
宗教上の理由でM$(笑)起源のC#を使えない人たちに人気ですよ
C#はラムダ式をvarで格納できないという素晴らしい個性がありますね。
C#もjavaのこと言えない位に行き当りな機能追加で言語仕様はアレだろう。第一級関数が普通の言語と比べると古臭いのはjavaと変わらない。unix系でjavaを置き換えるのは多分Go言語、言語仕様がシンプルで速度も出て安全性も高い。
そのvarが推論しているのはラムダ式ではなくてFunc<int>だから。
var mul=new Func<int,int,int>((int x,int y)=>{return x*y;});
引数を持つラムダ式の場合、引数の指定が冗長になる。そもそも普通はこうかくだろう。
Func<int,int,int> mul=(int n,int y)=>{return n*y;};
Lispみたいな変態言語にしかなかった第一級関数も「普通の言語」の機能になったのか。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
開いた括弧は必ず閉じる -- あるプログラマー
Javaってまだ使ってる? (スコア:0)
捨てるために読めないとダメとかそんな感じじゃないのか
Re: (スコア:0, 荒らし)
宗教上の理由でM$(笑)起源のC#を使えない人たちに人気ですよ
Re:Javaってまだ使ってる? (スコア:1)
C#はラムダ式をvarで格納できないという素晴らしい個性がありますね。
C#もjavaのこと言えない位に行き当りな機能追加で言語仕様はアレだろう。第一級関数が普通の言語と比べると古臭いのはjavaと変わらない。
unix系でjavaを置き換えるのは多分Go言語、言語仕様がシンプルで速度も出て安全性も高い。
Re:Javaってまだ使ってる? (スコア:1)
その理由わかっていってる?
これなら一応できるけど。
var y = new Func<int>(() => 1);
Re:Javaってまだ使ってる? (スコア:1)
そのvarが推論しているのはラムダ式ではなくてFunc<int>
だから。
var mul=new Func<int,int,int>((int x,int y)=>{return x*y;});
引数を持つラムダ式の場合、引数の指定が冗長になる。
そもそも普通はこうかくだろう。
Func<int,int,int> mul=(int n,int y)=>{return n*y;};
Re: (スコア:0)
と言いながら直ってないね。
(ひょっとして引数の型指定をしないけないから冗長になるって言ってる?)
それでもあなたはわかっているのだろうとは思うけど、型の推論が関数型言語ほどでないという弱さはある。
このコードで冗長なのはFuncで型を知らせないといけないところ。
でも Haskellだって型クラス制約つけるし、そんなにダメとは思わないんだよな。
とりあえず、
var mul=new Func<int,int,int>((x, y)=>{return x*y;});
Func<int,int,int> mul=(n, y)=>{return n*y;};
だね。引数に型名はつけなくていい。
Funcの型指定があるからその程度の型推論ならできてる。無印の.NET 3.5から可能。
あと「普通」は君の主観でしかない。変数名の先頭をそろえたいという好みの人もいる。
Re: (スコア:0)
Func<int,int,int> mul = (n, y) => n*y;
# さすがにこの指摘は細かすぎるかもしれない、すいません。
Re: (スコア:0)
Lispみたいな変態言語にしかなかった第一級関数も「普通の言語」の機能になったのか。