[過去ログ]
次世代言語12 Go Rust Swift Kotlin TypeScript (1002レス)
次世代言語12 Go Rust Swift Kotlin TypeScript http://mevius.5ch.net/test/read.cgi/tech/1530664695/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
478: デフォルトの名無しさん [sage] 2018/07/29(日) 16:09:52.04 ID:EbPqex13 メソッドチェーンがぱっとわかりやすいのも分かるが リスト内包はリスト内包で数学やってりゃわかる可読性がある リスト内包がわからんってわめき散らすの無知晒してるだけだからやめた方がいい それはそれとしてPythonはもっと関数を横に繋げられるようにしてくれ Elixirのパイプ演算子みたいな感じでさあ http://mevius.5ch.net/test/read.cgi/tech/1530664695/478
503: デフォルトの名無しさん [sage] 2018/07/30(月) 21:32:39.35 ID:9zA5gDfM >>478 「|」をオーバーロードしてるライブラリはある。 https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/wordcount.py 俺は別に読みやすいと思わんが。 http://mevius.5ch.net/test/read.cgi/tech/1530664695/503
518: デフォルトの名無しさん [] 2018/07/31(火) 15:00:19.27 ID:zoworXJJ >>478 あのぅメソッドチェーンとは異なり、内包表記というのは 決して万能な道具ではないんですけど、ご存知ですか? 内包表記というのは、高階関数 map/filter とジェネレータという 三つの要素を簡潔に表現できる構文糖でしかありませんから、 内包表記では表現できない課題も数多く存在します ですからたとえば Haskell では内包表記を提供する一方で、 ポイントフリーといふ関数を繋ぐ流れるようなスタイルでも書けます つまり「メソッドチェーン vs. 内包表記」という対決の図式は成り立ちません これでもまだ「リスト内包がわからんってわめき散らすの無知晒してるだけ」と 騒ぎたいなら、以下のお題(>>430-431)を内包表記だけで書いてみてください '-'.join(map(lambda x: str(x), reversed(sorted(a)))) >>478氏が無知でなければ、内包表記でサラッとエレガントなコードを書けますよね? ちなみに以下のような三重にカッコが入れ子になった醜いコードは勘弁してくださいね '-'.join(str(x) for x in reveresed(sorted(a))) http://mevius.5ch.net/test/read.cgi/tech/1530664695/518
519: デフォルトの名無しさん [] 2018/07/31(火) 15:33:57.86 ID:zoworXJJ >>517 >n個の集合の直積を考える場合普通n=1は除外しない ええ、それが Python 村の中では「普通」で常識なんですよね でも Python 村から一歩外に出れば: n個の集合の直積を考える、ここで n>=2 が「普通」なんですけど、ご存知でしたか? たとえば手元の教科書(*1)だと、直積は以下のように定義されています ・2つの集合の直積 A × B = { <x, y> | x <- A, y <- B } ・3つの集合の直積 A × B × C = { <x, y, z> | x <- A, y <- B, z <- C } ・4つの集合の直積も同様に定義される この本では n=1 は定義されていないし、個人としても定義のしようがないと考えます で、ML/Haskell/Erlang/Prolog といったタプルというデータ構造が存在する言語でも、 「普通」n=1の直積を除外しており、これが世間の常識です ちなみに「Python村の常識、世間の非常識」といふ格言、聞いたことありませぬか? ところで、もちろん内包表記はご存知ですよね? 知らないと>>478氏に「無知晒してる」と嗤われちゃいますよ *1:論理と計算のしくみ https://www.amazon.co.jp/dp/4000061917/ http://mevius.5ch.net/test/read.cgi/tech/1530664695/519
521: デフォルトの名無しさん [] 2018/07/31(火) 16:12:57.41 ID:zoworXJJ >>520 >n=1もあるしn=0もある >n=0は直積の単位元いわゆるunit たしかに Python 村の中では、n=0 も除外しないのが「普通」ですね で、静的型付け言語の ML/Haskell では単位型(unit)として定義され タプル型とは明確に区別されていますし、動的型付け言語では nil という特別なアトムで表現することが多く、これが世間の常識です ちなみに「Python村の常識、世間の非常識」といふ格言、聞いたことありませぬか? ところで、もちろん内包表記はご存知ですよね? 知らないと>>478氏に「無知晒してる」と嗤われちゃいますよ http://mevius.5ch.net/test/read.cgi/tech/1530664695/521
527: デフォルトの名無しさん [] 2018/07/31(火) 18:36:17.24 ID:zoworXJJ >>478 >それはそれとしてPythonはもっと関数を横に繋げられるようにしてくれ >Elixirのパイプ演算子みたいな感じでさあ いや、新たにパイプ演算子みたいな構文を追加しなくても、 オブジェクト指向言語の Python であれば、メソッドチェーンで実現できるよ だって、Python を除く今時のオブジェクト指向言語では実現できていますから その具体例が >>430 のリンク先のブログ主様が書いた簡潔なライブラリです 問題は、「なぜこれをやろうとしないのか?」という点です もちろんライブラリの後方互換性は失われますが、 python2 から python3 で致命的な「後方互換性の断絶」を断行したのが Python ですから、一貫性のあるAPIを提供するライブラリへの刷新もできたはず さらに根本原因にさかのぼれば、「なぜ最初から一貫性のあるAPIを設計しなかったのか」 といふ疑念に突き当たります だって、Python を除く今時のオブジェクト指向言語では設計できていますから 最後に背景原因を考察すると、Python 作者のGuido氏が: API の設計において一貫性などはクソ と考えていたのか、それとも: オブジェクト指向が流行っていたから行き当たりばったりに設計した、 今は後悔している と考えているのか興味深い http://mevius.5ch.net/test/read.cgi/tech/1530664695/527
571: デフォルトの名無しさん [sage] 2018/08/02(木) 03:23:08.65 ID:7JMdFE06 >>518 いつ誰が「メソッドチェーン vs 内包表記」なんて下らん比較したんだよ 内包表記は内包表記で便利だっつっただけで、 メソッドチェーンつーかポイントフリースタイルが内包表記があれば不要なんて言った記憶は少なくとも俺にはないな つーか>>478下段、まさにPythonにはポイントフリースタイル実現する記法が足りねえっつってんのが読み取れねえのか? 今時エセ歴史的仮名遣いで書き込むクルクルパーは国語の勉強しなおした方がいいぞ http://mevius.5ch.net/test/read.cgi/tech/1530664695/571
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.364s*