[過去ログ] 関数型プログラミング言語Haskell Part18 (1001レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(1): 2012/03/16(金)21:54 AAS
haskell.org
外部リンク:www.haskell.org
日本語サイト
外部リンク[cgi]:www.sampou.org
外部リンク:www.shido.info
過去ログ
関数型プログラミング言語Haskell
Part1 2chスレ:tech
Part2 2chスレ:tech
Part3 2chスレ:tech
省14
972: 2012/06/26(火)01:26 AAS
ポイントフリー病って言葉にトラウマでもあるんだろう
973: 2012/06/26(火)01:39 AAS
gcd 0 y = y
gcd x 0 = x
これは書いてよくて、一般的な場合だけポイントフリーにするならいけるんじゃない?
974: 2012/06/26(火)02:49 AAS
gcd' 0 y = y
gcd' x 0 = x
gcd' x y = gcd'' x y
gcd'' = (\x y -> gcd' (mod x y) (mod y x))
この最後の行をポイントフリーにするってことか。考えたけど解らん
975: 2012/06/26(火)08:28 AAS
gcd' (0,y) = y
gcd' (x,0) = x
gcd' (x,y) = gcd'' (gcd', (x, y) )
gcd'' = second (uncurry mod &&& uncurry (flip mod)) >>> app
使う関数をun/curriedどちらかに統一しないとcurryとuncurryが乱舞するから困る
あと無理やり全部ポイントフリーにするにしても
gcd' :: Integral a => (a,a) -> a
gcd' = loop $ swap >>> app &&& (fst >>> curry (cond ((==0) . fst .snd) >>> snd . snd ||| (cond ((==0) . snd . snd) >>> fst . snd ||| (second (uncurry mod &&& uncurry (flip mod)) >>> app))) )
cond :: (a -> Bool) -> a -> Either a a
cond p x = if p x then Left x else Right x
省4
976: 2012/06/26(火)10:01 AAS
そもそも単に「ポイントフリースタイルで書け」では、何を「プリミティブ」とするかが決められないからな…
ちなみにsを使えば
dot2 s (.) ( dot2 s (.) gcd' ) mod ( flip mod )
※参考
dot2 s (.) f g h x = f ( g x )( h x )
で(多分)動く…
977: 2012/06/26(火)10:18 AAS
あ、>>961ではプリミティブは(.)のみと規定されてるか…
(.)だけで、1つの引数を複数箇所で使用することは可能なのかな…
978: 2012/06/26(火)10:52 AAS
BコンビネータだけでLコンビネータを作るという問題
979(1): 2012/06/26(火)11:14 AAS
関数山手線ゲーム
1.関数を1つ決めます
2.既存の関数の集合からは定義できない関数を1つ挙げます
3. 2.で挙げられた関数を、既存の関数の集合に加えます
2.と3.を繰り返します
2.で挙げた関数が以下のいずれかの条件を満たすと負けです
・既存の関数から定義可能
・既存の関数の集合にその関数を加えるとチューリング完全にる(λxy.xとλxyz.xz(yz) が定義可能になる)
他の人が挙げた関数がいずれかに該当していると思ったら、指摘して証明しましょう 証明できたらその人の負け 証明できなければあなたの負けです!
省3
980(1): 2012/06/26(火)15:55 AAS
>>979
チューリング完全しばりこぇー
981: 2012/06/26(火)16:33 AAS
>>980
そのルールがないと、sとkを挙げた時点で終了してしまいますからね
982: 2012/06/26(火)16:48 AAS
>>917
C言語の関数ポインタもトリッキーで何やってるのか解
らないコードになるから全面禁止すべきだよな。
というかそもそもC言語はポインタが初心者に理解できないんだから
仕様でポインタなくすべきだ。初心者に保守できない言語はみんなクソ。
英文科出身でワードとエクセルしかできない俺にでも理解できる
言語をみんな作るべき。そうじゃないならつくった奴が馬鹿アホ間抜け
だということ。
初心者最強。誰でも生まれたときは初心者。初心者は神。
983: 2012/06/26(火)17:25 AAS
読めないものを書く権利をなくすのではなく、読めないものを読む義務をなくせばいい
984: 2012/06/26(火)18:00 AAS
まだやってんのか……
985: 2012/06/26(火)18:02 AAS
翻訳の質の話題がやっと収束したら思ったら、今度はポイントフリーを構文的に禁止しろか…
ホントどうでもいい話題ほど止まらんよな、このスレ…。
986: 2012/06/26(火)18:03 AAS
成功を全力で回避するのをやめれば、自転車置き場の議論が発生するのは不可避だ。
987: 2012/06/26(火)18:17 AAS
成功する義務を全力で回避する
つまり安全神話を回避
988(1): 2012/06/27(水)06:23 AAS
■ C
for( const char *s="12345"; *s; ++s ) if( '2'<*s&&*s<'5' ) printf( "%d", (*s-'0')*2 );
■ JavaScript
console.log([1,2,3,4,5].filter(function (i){ return i > 2 && i < 5 ; }).map(function(i){ return 2 * i; }));
■ Python
print(map(lambda x: x*2, filter(lambda x: x>2 and x<5, [1,2,3,4,5])))
■ Ruby
puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2}
■ C#
new{}{ 1,2,3,4,5 }.Where(x => 2 < x && x < 5).Select(x => x*2);
省4
989: 2012/06/27(水)06:59 AAS
[1..5]くらい使え
990: 2012/06/27(水)07:05 AAS
無限リストとはなんだったのか
991: 2012/06/27(水)08:01 AAS
>>988
もうPythonでもリスト内包表記使えるぞと指摘するのに疲れた
print([x*2 for x in [1, 2, 3, 4, 5] if 2 < x < 5])
992: 2012/06/27(水)08:34 AAS
python の
[hoge(変数) for 変数 in [〜] if 条件]
の構文(後置 if ?)って
リスト内包のときしか使えない?
for 変数 in [〜] if 条件:
hoge(変数)
ってやるとおこられる
気のせい?
993(1): 2012/06/27(水)09:21 AAS
リスト内包/ジェネレータ式のみだよ
for 変数 in [〜 if 条件]:
ならできる
994: 2012/06/27(水)09:21 AAS
python初心者スレでどうぞ
995: 2012/06/27(水)10:21 AAS
次スレ
2chスレ:tech
996: 2012/06/27(水)10:28 AAS
Python3って消えたな
997: 2012/06/27(水)10:44 AAS
>>993
ありがとう
998: 忍法帖【Lv=40,xxxPT】 2012/06/27(水)12:11 AAS
誘導&うめてんてー
次スレ
2chスレ:tech
999: 忍法帖【Lv=40,xxxPT】 2012/06/27(水)12:12 AAS
誘導っす
次スレ
2chスレ:tech
1000: 忍法帖【Lv=40,xxxPT】 2012/06/27(水)12:13 AAS
完走!
次スレ
2chスレ:tech
1001: 1001 Over 1000 Thread AAS
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.219s*