【スークリ】ひげぽん Part1【Mona】

このエントリーをはてなブックマークに追加
952仕様書無しさん:2008/02/18(月) 00:57:03
>>942
>値の入れ替えとかで、
>a = b[2];
>b[2] = b[1];
>b[1] = a;
>とかやるのをダサイとか感じてんだと思う
入れ替えになってないだろ、常識的に考えて・・・
953仕様書無しさん:2008/02/18(月) 01:28:03
元上司に子供が!
太郎のとこはまだ〜?

ttp://d.hatena.ne.jp/reikon/20080216/1203198944
>それから、やっとこの日記で報告することにしたのですが、
>ただいま妊娠五ヶ月で、7月後半には初めての子供が誕生
>する予定です。アメリカで授かって、日本で出産。激動のなか
>をお腹で成長している赤ちゃんは、どんな風に私の「バタバタ」
>を眺めているでしょうか。えらい親にあたってしまったなあ、
>なんて思っているかもしれません。
954仕様書無しさん:2008/02/18(月) 03:46:30
関数型言語がクソとか、、
モナド、継続のずっと以前に、きっと再帰も書けないんだろうなw
955仕様書無しさん:2008/02/18(月) 04:04:17
>関数型言語がクソとか、、
ん、誰のこと?
956仕様書無しさん:2008/02/18(月) 04:23:33
634
957仕様書無しさん:2008/02/18(月) 04:26:47
なんだ、てっきり二塩のことかと思ったよ
958仕様書無しさん:2008/02/18(月) 04:31:01
西尾はSchemeとかHaskellは使えるの?
959仕様書無しさん:2008/02/18(月) 04:59:43
それ以前にSchemeとかHaskell自体が使い物になりません。
960仕様書無しさん:2008/02/18(月) 05:24:33
SchemeやHaskellが使い物にならないとか、、
モナド、継続のずっと以前に、きっと再帰も書けないんだろうなw
961仕様書無しさん:2008/02/18(月) 06:07:09
>>959
駄目だ!やりなおし!
もっと上から目線で!
962仕様書無しさん:2008/02/18(月) 06:30:47
>>960
日本語の取り扱いに難がありすぎだろHaskellは。
963仕様書無しさん:2008/02/18(月) 06:31:25
>>960
不動点演算子とかカリー化とか
どれがどのようなものなのか教えてください
964仕様書無しさん:2008/02/18(月) 07:01:01
再帰とかリソースの無駄遣いだから。
965仕様書無しさん:2008/02/18(月) 08:22:04
>>964 テイルコールを知らない奴乙
966仕様書無しさん:2008/02/18(月) 09:29:36
テイルスープなら食ったことあるお^^
967仕様書無しさん:2008/02/18(月) 09:56:34
>>966
5点
968仕様書無しさん:2008/02/18(月) 10:50:07
>>963
あなた、一度でもリファレンスに目を通しましたか?
最初から最後まで一読してから、わからないことがあれば質問してください。
幸運なことに、リファレンスは日本語化されています。
969仕様書無しさん:2008/02/18(月) 19:35:45
>>968
Haskellのコードじゃなく、概念を知りたいんだが。
数学的に不動点は分かるとしてカリー化すると
何がどうよくなるのよ。
970仕様書無しさん:2008/02/18(月) 19:42:35
             ___
.            |(・∀・)|
.            | ̄ ̄ ̄   ジサクジエン王国
         △
        △l |
   __△|_.田 |△_____
      |__|__門_|__|_____|_____
971仕様書無しさん:2008/02/18(月) 19:43:25
>>969
あなた、一度でもリファレンスに目を通しましたか?
最初から最後まで一読してから、わからないことがあれば質問してください。
幸運なことに、リファレンスは日本語化されています。
カリー化は中学生は教わっています。
972仕様書無しさん:2008/02/18(月) 19:44:10
>>970
テイルコールを知らない奴乙
973仕様書無しさん:2008/02/18(月) 20:51:05
カリー化って、カレーになるの?
974仕様書無しさん:2008/02/18(月) 21:10:34
>>969
ネタじゃなくて本当に知りたいの?
原理とかは知っているみたいだから、
実用的な面についてだけ書く。

関数を特殊化して引数を減らすのに使う。
たとえば掛け算の最初の引数2を固定化してnibai(二倍)という関数を作る。
[Haskell] nibai = (*) 2
こうすると、nibai 4とすると(*) 2 4と評価されて8になる。

同じことはC++のテンプレートでもできる。
#include <stdio.h>
int mul(int a, int b) { return a * b; }
template <int(*T)(int,int),int V> int curry(int v) { return T(V, v); }
int main() {
  int(*nibai)(int) = &curry<mul, 2>;
  printf("nibai(4) = %d\n", nibai(4));
  return 0;
}
975た ◆OfbR27j4Oc :2008/02/18(月) 21:54:22
単純に独自の前置演算子を定義できる
ってだけ?それとも他にもバリエーション
あるの?
976:2008/02/18(月) 23:26:01
>>975
できる
977仕様書無しさん:2008/02/18(月) 23:59:22
>>975
独自の前置演算子なんか定義してないぞ
(*)は単なる組み込みの掛け算だ

フツーは2*3みたいに中置で使う
演算子を前置したいときには括弧でくくって(*)と書く
だから 2*3 と (*) 2 3 は同じこと

そのときに(*)単独で取り出すと関数ポインタみたいになる
mul = (*) とすれば mul 2 3 が 2*3 と同じになる
978仕様書無しさん:2008/02/19(火) 00:12:04
ひょっとして文法が違うのに引っかかってるのかな?
これ見たらただの表記の違いだってわかると思う

[C言語] foo(bar, baz);
[Haskell] foo bar baz
[Lisp] (foo bar baz)

[C言語] foo(bar(baz));
[Haskell] foo (bar baz)
[Lisp] (foo (bar baz))

基本的にHaskellの書式はLispの一番外の括弧を
取っ払ったものだと考えると良いかも
括弧が嫌いな人には別の記法も用意されている
foo (bar baz) → foo $ bar baz
979仕様書無しさん:2008/02/19(火) 00:16:43
そんなことよりおまいらの太郎が批判されてますよ

ショック!ryokoたんは実は男!2
http://pc11.2ch.net/test/read.cgi/prog/1195741975/287-288

287 名前: 仕様書無しさん [sage] 投稿日: 2008/02/18(月) 23:35:03
はげぽんはryocotanをはてなに誘っといて、自分も逃げ出したからな
ハンドルの可愛らしさからは想像出来ないほど狡猾な奴だよ

288 名前: 仕様書無しさん 投稿日: 2008/02/19(火) 00:06:27
たしかにひげぽんのアレは酷いよな。
でも、就職先の決断の結果は自分で負うものだ。
980た ◆OfbR27j4Oc :2008/02/19(火) 00:22:12
>>976

> [Haskell] nibai = (*) 2
って定義(?)して、
 nibai 4
ってやると、8が得られるって書いてたから、
nibai っていう前置演算子を定義したのかと思った。

としると、(*)はポーランド式の乗算演算子で、
(*) 2 3 とすると、2*3 と同じになって、(/) 2 3 とすると、
2/3 と同じになるわけ?
981仕様書無しさん:2008/02/19(火) 06:26:29
>>974
ありがとう。
プログラミング言語はもうHaskellしかありえないね。
他はカス
982仕様書無しさん:2008/02/19(火) 06:27:18
>>980
一度Lispとか、関数型の言語を
さらっとやってみるといい。
俺はHaskellのカリー化について
難しいかもしれないと感じていて調べもしなかった。すまぬ。
983仕様書無しさん:2008/02/19(火) 06:45:07
>Cの配列ってあふれるの?
あふれた時点で、segvで落ちない?
984仕様書無しさん:2008/02/19(火) 07:11:40
f(X, Y) という関数fがあったとして、その関数fを、
g(X)(Y) = f(X, Y) となるような関数gにすること、がカリー化。

(X, Y, は任意の引数列)

とりあえず、高階関数という概念がわかってないと、ちんぷんかんぷん
だと思うけど、そういうことをきちんと勉強する気がないと思われる
たけくんや質問厨は帰って自分の仕事をやってろ。
985仕様書無しさん:2008/02/19(火) 08:02:44
別にたけくんみたいな組み込み屋には
カリー化なんぞ必要ない訳で、
ものには適材適所というものが有るにもかかわらず、
いつまでも関数型言語にこだわる厨はいつまでもオナニーしてると良いよ。
986仕様書無しさん:2008/02/19(火) 08:07:50
関数型言語が生きてくるって分野ってどんなのですか?
987仕様書無しさん:2008/02/19(火) 08:13:22
WEBアプリとか
988仕様書無しさん:2008/02/19(火) 08:57:23
関数型言語なんていつまでたっても主流になる事はないよ。
一生黒板使って勉強してろ。
989仕様書無しさん:2008/02/19(火) 09:57:52
こうして形式的検証の時代に乗り遅れるエンジニアが大量生産されていった。
2008年のことであった。
990仕様書無しさん:2008/02/19(火) 10:41:43
まあ、組み込みですぐHaskellが役立つことはないと思うけど、
JavaScriptとかC#とか普通の人向けの言語にも
関数型の機能がどんどん入って行ってるので、
概念をかじっとくのも悪くないかなと思う。

>>980
> nibai っていう前置演算子を定義したのかと思った。
ああ、そっちね。
それは関数定義だよ。

> としると、(*)はポーランド式の乗算演算子で、
表記はポーランド式なんだけど、
これは関数と考えるんだよ。
(*)の関数としての定義は
int mul(int a, int b) { return a * b; }
みたいな感じ。

> (*) 2 3 とすると、2*3 と同じになって、(/) 2 3 とすると、
> 2/3 と同じになるわけ?
うん、そうだよ。
991仕様書無しさん:2008/02/19(火) 11:03:48
HaskellとC言語で大きく表記が違うのは、
関数定義が数値代入と同じように扱われる点。

たとえばC言語でさっきのmulを別の変数に代入すると、
int(*hige)(int,int) = mul;
みたいに読みにくい構文になっちゃうけど、
Haskellだと hige = mul; と関数の型を書かなくて済む。
LLみたいな動的型ではなく、コンパイラが自動的に型を静的に決める。
これを型推論という。

関数を引数で渡したり、関数を戻り値にしたりする関数を高階関数と呼ぶ。
C言語で高階関数を書くと非常に読みにくい。

関数を引数で渡す:
int foo(int(*func)(int,int),int a,int b){return func(a,b);}

関数を返す:
int(*get_mul())(int,int){return mul;}

関数を引数で受け取って、戻り値にするようなのを書くと、
とんでもないことになってしまう。
こういうのが簡単に書けるというのが関数型言語の特徴。
C言語のqsort()みたいにコールバックを渡す関数があるけど、
そういう書き方をもっとあちこちで使おうという発想。
992仕様書無しさん:2008/02/19(火) 11:06:55
>>983
後ろに詰め物が入ったりすることがあるので、
運が良いと(悪いと?)落ちないんですよこれが。
で、色々な怪奇現象に頭をかかえると。

なのでvalgrindなんて物に頼ったりするわけだ。

ところで次どうするの?
993仕様書無しさん:2008/02/19(火) 11:16:06
>ところで次どうするの?
とりあえずスレタイからスークリという言葉をなくそう。
スークリってのは、未踏に落ちた奴が腹いせにスーフリにかけて言い出したんじゃなかったか。
せめてスパクリにしとけ。
994仕様書無しさん:2008/02/19(火) 11:32:28
>>993
スークリを外して立てた

次スレ

【天才マ】ひげぽん Part2【Mona】
http://pc11.2ch.net/test/read.cgi/prog/1203388308/l50
995仕様書無しさん:2008/02/19(火) 11:43:25
ここマ板だし天才マってのいいね
996仕様書無しさん:2008/02/19(火) 12:22:29
っーかさ、言語なんてたかが道具なのに何グダグダ言ってるの?
関数型言語(特にHaskell)つかって作られた有名なアプリケーションが
この世にいくつある?
CやJavaを使って作られた有名なアプリケーションが
この世にいくつある?
関数型言語厨が何を言っても、結局それが答えさ。
道具にこだわるなんて無駄無駄。
普及していない言語覚えてアプリケーション一つ書けないよりも、
普及している言語覚えて独創的なアプリケーション書いた方がマシ。
997仕様書無しさん:2008/02/19(火) 12:29:42
普及している言語使ってるのに独創的なアプリケーション書けないやつもいるし
998仕様書無しさん:2008/02/19(火) 12:31:33
>>991
>関数定義が数値代入と同じように扱われる
↑意味不明

型推論には静的も動的も(併用も)ありうる。
型推論のあるLLというのもありえなくはない。

そもそもC言語(の型)には「関数」はなくて、ポインタ使って、
それっぽいことをやっているだけなのだから(ということは
わかっているとは思うけど)、

その説明では、高階関数がわかっている人に、C言語でそれっぽい
ことをやる方法の説明にはなっても、高階関数がわかってない
人への説明にはならない。
999仕様書無しさん:2008/02/19(火) 12:32:50
>>996
> っーかさ、言語なんてたかが道具なのに何グダグダ言ってるの?
> 関数型言語(特にHaskell)つかって作られた有名なアプリケーションが
> この世にいくつある?
> CやJavaを使って作られた有名なアプリケーションが
> この世にいくつある?

有名じゃないが米軍の兵器にゃAdaが入っているはずだし、電話交換機じゃ
CHILLを使ってた。有名かどうかなんぞたいした指標じゃない。
1000仕様書無しさん:2008/02/19(火) 12:34:29
オマエモナー
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。