[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/14 13:02 / Filesize : 255 KB / Number-of Response : 780
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【激突】関数型言語 VS オブジェクト指向言語2



1 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 21:26:47.61 ]
一般的には、オブジェクト指向型言語が優勢でが
一部には関数型言語を崇拝している人もいます

どちらが上なのか、この際はっきりさせましょう

前スレ toro.2ch.net/test/read.cgi/tech/1331328955/

345 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 05:59:25.03 ]
じゃあ、型的に間違ってるプログラムをコンパイルエラーにしてください、という問題はどうだろうか。

fizzbuzzのscheme多値版ね。マクロ使っちゃっちゃったけど。

(define-syntax fizz (syntax-rules () ((_ arg) (receive it arg (fuzzbuzz it "Fizz" 3)))))
(define-syntax buzz (syntax-rules () ((_ arg) (receive it arg (fuzzbuzz it "Buzz" 5)))))
(define fuzzbuzz
(lambda (arg name m)
(let* ((is-num (null? (cdr arg))) (s (if is-num "" (car arg))) (a (if is-num (car arg) (cadr arg))))
(if (= 0 (mod a m)) (values (string-append s name) a) (if is-num a (values s a))))))
(define main (lambda (_) (letrec ((loop (lambda (n) (if (<= n 30)
(begin (print (buzz (fizz n))) (loop (+ n 1))))))) (loop 1))))

346 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 06:40:24.02 ]
ループ禁止で再帰だけで書いてください、とかでも良いな
末尾再帰最適化の無い実装じゃスタックオーバーフロー

347 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 06:51:51.42 ]
>>325
組み込みクラスを弄るのはOK
組み込み演算子を弄るのはNG

何故?

348 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 10:00:34.73 ]
初学者といっても
1.プログラミングを学ぶことが目的
2.作りたいものがあって、その手段としてプログラミングが必要
で違う。

1なら関数型言語は良い選択
2ならオブジェクト指向言語やLLの方が早い

こういうスレの喧嘩は
1の人の多くは、プログラミングを座学として勉強しただけで実は何も作れない
2の人の多くは、作りたいものが動けばいいというだけでプログラミングに対する向上心がない

という現実を反映しているだけ。

349 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 10:10:56.56 ]
そしてモマエは
3向上心のカタマリのオレ様にケンカうってんのかーーー
カワネーゾ

350 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 10:28:07.46 ]
>>343
いまは人工的に作ったお題の信用がなくなってるんだよ
そこでまた中立でない人間がお題を出しても、紙屑のように無視されるんじゃないの

351 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 10:47:19.60 ]
>>306
QZってこんなスレまで見てるんだな

352 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 11:03:19.87 ]
>>350
>>290>>325のような上から目線で変なルール押し付けてくるウザいヤツが
居なければ、言語ごとのアプローチの違いが見れて
遊びとしては面白いんだがなぁ
しかもウザいのに限って口だけでプログラム書けないんだ

あ、もしかして>>290>>325がこのスレに書いたコード在る?だったら謝るけど

353 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 11:31:51.96 ]
すまんけどちょっと確認させてください。これまで出てきた関数型言語の回答で、
関数合成演算子(あるいは関数)を定義が必須な場合でも、関数 fizz だけ用いた
fizz 1 や fizz 3 はちゃんと組み込み型の数値や文字列である 1 や "Fizz" を返せるのでしょうか?
これって一応要件だと思うんですよね。C++ の回答についても同様です。
Ruby や JS 、Smalltalk の回答はすべてこれが出来ているみたいなんだけど。



354 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 11:49:35.83 ]
C++は型キャストをカスタマイズできるからそれで対応したら良いと思う。
FizzBuzzオブジェクトから文字列型と数値型へのキャストをそれぞれ用意すればよし。

355 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 12:28:02.63 ]
>>352
今でも十分おもしろいと思うよ。せっそうのない動的言語(OOといえばOOだけど、
ストラウストラップの抽象データ型OOでなくて、ケイの動的OO寄りの考え方)では
可能だけど、理論的にきっちりした関数型言語では実現不可な境界がはっきりしてきてて。
出来ないと分かっていることを出来ないときちんと理由付きで示せる勇気も見れるし。
他方で、動的言語でもすんなりできるとは限らないから各言語での工夫の仕方も興味深い。

356 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 12:29:01.02 ]
>>353
>>341だけど、関数fizz, buzz, gizzをそれぞれ単独で使用した場合をテスト。
> [fizz; buzz; gizz] |> List.map(fun f -> [1; 3; 5; 7] |> List.map f);;
val it : obj list list =
[[1; "Fizz"; 5; 7]; [1; 3; "Buzz"; 7]; [1; 3; 5; "Gizz"]]

357 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 13:02:32.74 ]
あ、すいません。F#さんを見落としていました。
F#以外の関数型言語の回答で、ですね!
わざわざの検証、いたみいります。

358 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 14:04:34.17 ]
スレッドローカルに状態を保持するのはいいアイデアですね。

359 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 14:10:22.10 ]
いいアイデアですねw

360 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 14:42:43.34 ]
>>353
>>340だけどテストしてみた

*Main> [map f [1,3,5,7] | f <- [fizz, buzz, gizz]]
[[1,Fizz,5,7],[1,3,Buzz,7],[1,3,5,Gizz]]

361 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 14:50:32.97 ]
>>353
ついでに>>283もテスト
正しく動かなかったので修正

fizzT f s = (\x -> Left x) . fizzT'
  where
    fizzT' n | f n == 0 = Right s
    fizzT' _ | otherwise = Right []

これで >>360と同じコードが動いた

362 名前:361 mailto:sage [2012/04/14(土) 15:07:31.88 ]
面白かったのは>>283>>360を試して動かなかったとき
ちゃんとコンパイル時に型エラーになったこと
Haskellの型システムやるじゃん、みたいな

363 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 15:54:35.13 ]
ねえねえ、1 から 3 までの fizz n の戻り値に対して、文字列なら全大文字化、整数なら 10 倍にして
map するコードを [1, 2, "Fizz"] に対して同じことをするコードとまったく同様に書いて
問題なく実行できるかどうか試しみててよ! クイズの要件をみたしていればできるよね!
もちろんいうまでもなく追加定義や修正は無しだよ。Ruby や F# のはもちろんできるよ!




364 名前:340 mailto:sage [2012/04/14(土) 16:01:06.17 ]
>>360
fizz (HasA s n) = HasA (s ++ if mod n 3 == 0 then "Fizz" else "") (10 * n)

365 名前:340 mailto:sage [2012/04/14(土) 16:02:40.14 ]
あ、ごめん>>363だった
それはさておき、後だしでルール追加するの本当に好きだね

366 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:06:40.84 ]
>>363
じゃあ、組み込みクラスをグローバルに汚染するのも禁止しようぜ
classbox等で一部に制限できるならアリ

367 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:07:57.17 ]
というか、ここのHaskellerはどうしてこうも要求仕様を読み取れないくせに
あまつさえ勝手な解釈で適当なコード書いてドヤ顔なの? バカなの? 死ぬの?

368 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:11:06.66 ]
>>367
誰もお前の頭の中なんて知らないし興味ないんだから
言わないと分からないっつーの
ここはお前の要求仕様を満たす場じゃねーし
馬鹿はお前

あと、まさかコードも書かずに議論参加してたとか無いよな
書いたコードのレス示せよ
俺は>>340書いたぞ

369 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:16:29.12 ]
(defmacro defun-fizz-buzz (name divisor)
`(defmacro ,name (form)
`(multiple-value-bind (int str) ,form
(values int
(if (= (mod int ,',divisor) 0)
(concatenate 'string str (string ',',name))
str)))))

(defun-fizz-buzz fizz 3)
(defun-fizz-buzz buzz 5)
(defun-fizz-buzz gizz 7)

370 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:21:51.37 ]
>>367
> ドヤ顔なの?バカなの? 死ぬの?
w
いまどき、こんな台詞をわざわざ書くやつがいるんだww

371 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:23:54.35 ]
勘違いしたふりして頓珍漢なコード出してきて、
言語や自分の発想の限界とかクリティカルなところはなんとか避けようとしているんだよ。
仕様を取り違えてるよってやんわりチェック方法をしめすと、
ルールを増やすな、後出しだ、仕様が欠陥だってなんやかやクレームつけて
相手が根負けして要求仕様のほうが変わるのを粘り強くじっと待つ戦略なんだ。
ある意味、賢いよ。

372 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:26:54.36 ]
お題提出者の解答ってもう出てるの?

373 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:29:32.45 ]
>>363
> map するコードを [1, 2, "Fizz"] に対して同じことをするコードとまったく同様に書いて

Haskellは静的型付けだから数と文字列を同じリストには入れられないんだ
そんなことも知らずに議論してたんじゃないよね?



374 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:32:03.01 ]
>>371

>>368
> あと、まさかコードも書かずに議論参加してたとか無いよな
> 書いたコードのレス示せよ

って書いてるのに示さないってことは、まさか本当にコード書いてなかったの?

375 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:33:37.46 ]
まさかの口だけ野郎説浮上www

376 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 16:44:57.11 ]
>>363は問題が頓珍漢だけど(静的型で [1, 2, "Fizz"] はねーよw)
最大限エスパーして書いてみた

>>283はこんな感じ

conv (Left n) = Left $ 10 * n
conv (Right s) = Right $ map toUpper s
main = do
  print $ map conv [Left 1, Left 2, Right "Fizz"]
  print $ map conv $ map fizz [1,2,3]

>>340はこんな感じ

conv (HasA s n) = HasA (map toUpper s) (10 * n)
main = do
  print $ map conv [1, 2, "Fizz" `HasA` 3]
  print $ map conv $ map fizz [1,2,3]

377 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 17:03:29.49 ]
>> xs = (1..3).map{ |n| n.fizz }
=> [1, 2, "Fizz"]
>> xs.map{ |x| case x when Integer then x*10 when String then x.upcase end }
=> [10, 20, "FIZZ"]
>> ys = [1, 2, "Fizz"]
=> [1, 2, "Fizz"]
>> ys.map{ |x| case x when Integer then x*10 when String then x.upcase end }
=> [10, 20, "FIZZ"]

378 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 17:45:03.77 ]
◆QZaw55cn4c が出てきて有耶無耶になってるけど
「Javaドカタはコード書けない」説はまだ有効

379 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 17:57:01.51 ]
◆QZaw55cn4c はドカタではないとでも

380 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 18:26:18.94 ]
Haskellでコード書くだけで天才になれた気がした15の夜

381 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 18:49:30.59 ]
敵はハスケラだけと思ってるところがウケるw
どんな言語使いから見ても口だけ野郎は最底辺のゴミだぞwww

382 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 18:52:07.05 ]
おまえもなw

383 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 19:54:38.00 ]
コード書けないドカタは「なでしこ」使えば良いんじゃないか?
運が良ければ日本語で書いた戯れ言が
実行されるかもしれないぞ



384 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 21:39:02.30 ]
>>383
お前は詳しそうだな、その言語。
興味持って使ってみたのか?w

385 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 10:22:56.77 ]
まだPythonは出てなかったので


class F(object):
    def __init__(self, f):
        self.fs = f if hasattr(f, '__iter__') else [f]
    def __call__(self, x):
        if isinstance(x, int):
            s = ''.join(f(x) for f in self.fs if isinstance(f(x), str))
            return x if s == '' else s
        else:
            return F(self.fs + [x])

fizz = F(lambda x: 'Fizz' if x % 3 == 0 else '')
buzz = F(lambda x: 'Buzz' if x % 5 == 0 else '')
gizz = F(lambda x: 'Gizz' if x % 7 == 0 else '')

print [fizz(buzz)(gizz)(x) for x in [1,3,5,7,15,21,35,105]]

386 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 10:31:36.36 ]
F#、さすがだな。

387 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 10:48:20.05 ]
>>385
可能なら、
gizz(buzz(fizz(105))) is "FizzBuzzGizz" となるようなヤツをお願いします。

388 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 10:55:31.60 ]
>>387
理由を聞いても良い?
Pythonでは>>385のほうがデコレータでも使えて良いんだけど……

@fizz
@buzz
def bizz(x):
    if x % 11 == 0: return 'Bizz'
    else: ''

389 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:03:37.43 ]
静的型言語にIntを返したりStringを返したりする関数って縛りがそもそも無理

390 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:07:14.65 ]
>>388
>>254

391 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:08:32.55 ]
PerlとかSchemeの、多値をうまく使ったのが一番エレガントかな。

RubyとかJSは、同じようなコードをStringとNumberの両方に生やすとか、
見事に汚い解だw

392 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:13:32.41 ]
関数を返す関数(カリー化されてりゃ普通)にケチがつくとか
スゲーなこのスレ

393 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:16:23.31 ]
>>390
ちゃんと「など」って書いてるぞー

> オープンクラス機構やメソッドのない言語では関数(buzz(fizz(3)) #=> "Fizz" など)で。

それとも高階関数は関数じゃないんですかー



394 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:20:37.25 ]
>>389
それだけじゃない。
継続の状態如何で関数に振る舞いを変えさせるとか
関数型には無理な事ばかり要求している。
悪意に満ちたクイズだ。

395 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:23:20.66 ]
>>394
素直に考えれば、オープンクラスのある言語が良いという
意見に持っていきたい問題だからね

でも出てきた解はRubyが一番汚いという

396 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:25:11.88 ]
>>389
型クラスとかってこういう時には使えないの?

397 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:30:40.55 ]
要求による。

問題の「#=> "FizzBuzz"」が意味しているものが、REPLでそのように表示されるもの、
という意味なら、Show型クラスでいいんだけど、String型([Char]型)を要求してるなら無理。

398 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:32:07.68 ]
静的型 vs 動的型スレ向きの問題だよね

399 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:52:01.47 ]
>>391
いやあ俺は>>341のF#(er)が一番エレガントだと思うぞ。
無茶な要求仕様も黙ってすべて満たしつつ、簡潔できれいなコード出してきてるし。

400 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:57:38.79 ]
>>399
ThreadLocalが一番エレガントって
どういうセンスしてんだよ

401 名前:デフォルトの名無しさん [2012/04/15(日) 12:04:48.59 ]
#include <stdio.h>
#include <string.h>
int v,w,t;char buf[4<<10];void*fizz(void*n){if(!t&&!v){v=(int)n;t=!t;}
if(!(v%3))goto a;else if(!(w&0x7))goto b;else goto c;a:{size_t
(*f)(char*restrict,const char*restrict,size_t);f=(w&0x7)?strlcat
:strlcpy;w|=0x1;f(buf,"Fizz",4<<10);}goto c;b:{char b[2<<8];;;;;;;;;;;
snprintf(b,2<<8,"%d",v);strlcpy(buf,b,2<<8);}goto c;c:return buf;}void
*buzz(void*n){if(!t&&!v){v=(int)n;t=!t;}if(!(v%5))goto a;else
if(!(w&0x7))goto b;else goto c;a:{size_t/**/(*f)(char*restrict,const
char*restrict,size_t);f=(w&0x7)?strlcat:strlcpy;w|=0x2;f(buf,"Buzz",
4<<10);}goto c;b:{char b[2<<8];snprintf(b,2<<8,"%d",v);strlcpy(buf,b,
2<<8);}goto c;c:return buf;}void*gizz(void*n){if(!t&&!v){v=(int)n;t=!t;}
if(!(v%7))goto a;else if(!(w&0x7))goto b;else goto c;a:{size_t (*f)
(char*restrict,const char*restrict,size_t);f=(w&0x7)?strlcat:strlcpy;
w|=0x1;f(buf,"Gizz",4<<10);}goto c;b:{char b[2<<8];;;snprintf(b,2<<8,
"%d",v);strlcpy(buf,b,2<<8);}goto c;c:return buf;}int main(void){printf
("%s\n",gizz(buzz(fizz(105))));}

402 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 12:22:36.47 ]
>>368
>あと、まさかコードも書かずに議論参加してたとか無いよな

>>395
>でも出てきた解はRubyが一番汚いという

このスレの特徴まとめ

403 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 12:34:01.13 ]
>>399
グローバル変数ではまずいと考えてThreadLocalにしたみたいに見える
まずいという認識がありながら、それを上に報告しないのはおかしい
結局、要求に対する不平不満は正直に言えばいいんだよ



404 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 12:52:12.22 ]
コード書けないドカタとプログラマでは綺麗さの認識が違う

405 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 13:06:57.34 ]
そうだね
お前のコードかけないドカタって概念がおかしいけどねw

406 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 13:29:07.47 ]
>>405
あれ?まだこのスレに居たの?
派遣仕事で使い慣れたJavaを使って良いから
早くエレガントな解を出してくださいよwww

407 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 13:32:57.13 ]
くやしいんだねw

408 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 13:55:54.00 ]
仕事しろ。言語の勉強はするだけ無駄。

求められているのは動くアプリだ。

409 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 14:23:06.70 ]
そもそも関数としての体をなしてないのだから、
副作用を使わずにこのクイズは解けない。
よって純粋な関数型パラダイムでは対応不可。終了。

410 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 14:32:35.61 ]
Scalaならいろいろ駆使して書けそうだけどな

411 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 14:38:59.15 ]
>>393
この場合の「など」は、関数呼び出しにもいろいろありますよね、
buzz(fizz(3)) 、 (buzz (fizz 3)) 、buzz fizz 3 など―とかの「など」だと思われ。

412 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 15:23:11.97 ]
関数じゃないものを
関数型言語で作るには
どうしたらいいのだろうか?

413 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 15:27:19.67 ]
>>409
副作用なしに解いたSchemeさんが涙目です



414 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 15:35:03.47 ]
>>411
三つ目が>>385だね(カリー化されてれば)
それとも見た目だけの問題?

415 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 16:42:00.03 ]
F#でThreadLocal等の副作用もないバージョン。

type MainBuilder() =
    member this.Return x =
        x |> List.map (function
        | _, Some names -> box names
        | number, None -> box number)
let main = MainBuilder()

let makeFizzBuzz name condition (x : obj) =
    match x with
    | :? int as number -> number, if condition number then Some name else None
    | _ ->
        let number, names = x :?> int * string option
        number, if condition number then (defaultArg names "") + name |> Some else names

// fizz, buzz, gizzの定義は>>341と同じなので省略

> main { return [1; 3; 5; 7; 15; 21; 35; 105] |> List.map (fun x -> gizz(buzz(fizz x))) };;
val it : obj list =
  [1; "Fizz"; "Buzz"; "Gizz"; "FizzBuzz"; "FizzGizz"; "BuzzGizz"; "FizzBuzzGizz"]

416 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 17:46:44.23 ]
新ルール「カリー化禁止」

417 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 17:53:43.12 ]
>>415
mainがダウト、なんじゃないか?

418 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 18:08:11.82 ]
>>417
main { return ... } 部分をただのコードブロックとみせかけて
実は戻り値を変換しているという作戦だったのに、バレたか。

419 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 18:31:37.86 ]
Smalltalkが流行らないように関数型メインは流行らないよ

420 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 18:34:04.58 ]
ついに「流行らない」以外に縋るものがなくなっちゃったか

421 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 18:34:51.92 ]
副作用ありとは言え、唯一まともな解出しててF#△だったのに
この期に及んで汚ないチートとかなにこのものすごい残尿感。

422 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 18:40:05.54 ]
.NET発表時のHaskell.NETはどこに行ったんだよ?

423 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 18:43:46.95 ]
マクロ使っていいならそもそも多値なんぞ使わんでも楽勝だろ。



424 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 18:47:39.47 ]
FizzBuzzって流行ってるけど何が面白いの?

425 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 18:52:45.85 ]
低能はFizzBuzzすら書けないという事実が面白い

426 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 18:53:02.18 ]
>>423 具体的にドーゾ

427 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 19:04:47.51 ]
オープンクラスとか副作用有り等の
汚いコードだけが「合格」www

勝手に判定してる(コード書けない)バカのセンスが露呈してますな

428 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 19:05:21.22 ]
>>423
perl書いたのオレなんだけれどもさ、その通りなんだよな…

429 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 19:08:10.88 ]
C#とかも関数型言語のエッセンスを取り入れるけど
すげえ無理矢理くさくて笑えるw
関数型がオブジェクト指向を取り入れるのはもっと自然なのに

オブジェクト指向っていうかC系列はもう駄目なんだと思う

430 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 19:18:55.29 ]
守らなければならない資産がたくさんあるからな
そりゃ無理やりくさくもなるさ

431 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 19:28:01.70 ]
後付で入れなきゃならなくなる時点で失敗だったはずなんだけどなぁ。
最近のC#の機能なんてC#以前から概念として存在してたはずなのに。
必要ないという当初の目論見は外れてるわけだ。

というか、資産っていうのはC風の構文そのものなんだよね・・・
C風じゃないとヤダヤダいう人が多すぎてD言語とかいちいち作られてる気がする。

C++、Java、C#、D言語
このへんは全て老害でしょ。

432 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 19:30:26.05 ]
C#、D言語は設計に一貫した思想がないからアホっぽくなるのは仕方ない。

433 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 19:41:07.47 ]
fizz 1 -- "1"
fizz 3 -- "Fizz"
buzz 5 -- "Buzz"
buzz fizz 15 -- "FizzBuzz"
だったらHaskellでも解ける?



434 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 19:45:23.42 ]
可変長引数とかさーー

435 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 19:50:00.84 ]
>>431
C系列でまともなのはCだけ

436 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 19:50:26.06 ]
>>433
型の不整合が生じるから無理

437 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 19:52:02.10 ]
>>432
C#はどんどんダメな方向に向かってる気はするわー。

438 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 20:01:50.15 ]
Javascriptは結構好きなのよん > C系文法族

439 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 20:11:47.98 ]
>>406
>>303-304

440 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 20:19:32.18 ]
>>431
後付で入れてもらったのがScala、Clojure、F#でしょ
なんで後付を悪く言うのかな

441 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 20:41:24.35 ]
C#は言語設計に一貫性がなく節操のないところが最大の魅力
偉い人にはそれがわからんのです

442 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 21:08:30.57 ]
>>440
アホか
それらは最初から関数型言語として作られてるでしょ。
関数型は糞、オブジェクト指向最高ってスタンスで作ってたはずのもんが
なんで今更関数型の要素を入れようとするんだよ。

443 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 21:16:51.80 ]
>>439
オーバーライドした toString() を println() に暗黙に呼ばせるとかいう
使い古されたチートをキメ顔で出してこられても…。
new myInteger(3).fizz() が "Fizz" を返せるとか少しは挑戦しようよ。



444 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 21:17:08.32 ]
「.Netファミリーに関数型言語入ったからC#でも使えるようにすっか!」
くらいのノリだろ。たぶん
dynamic型導入したときもそんな感じだったし

445 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 21:18:37.55 ]
いやC#の場合は「C#で〜が出来ないと言わせない」という一貫した姿勢があると思う。
もともとJavaへの嫉妬から始まった言語だし。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<255KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef