[過去ログ] 次世代言語12 Go Rust Swift Kotlin TypeScript (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
523(1): 2018/07/31(火)17:40 ID:vAluDZRs(1) AAS
そもそも = が代入って時点で数学と違うんだから
いちいち「厳密な定義がー」いう方がどうかしてる。
524: 2018/07/31(火)17:55 ID:zfxDeDFf(1/4) AAS
普通にWikipediaでタプルをしらべたら一要素のタプルの事をシングルというと
書いてあるのだがwww
525(1): 2018/07/31(火)18:08 ID:zoworXJJ(5/8) AAS
>>522
数学の定義や数式を計算機上で実行するには、
必然的に「解釈」という(あるいは「評価」とも呼ばれる)プロセスを伴いますから、
数学の概念とプログラミング言語との間に乖離(かいり)が存在するのは一般論ですし、
その為に計算機工学という分野で研究成果が積み重ねられてきました
もちろんこうした乖離は一般論ですから、例を探せばいくらでも挙げられるでしょう
たとえば「n個の直積を考える」場合に数学では n=1 や n=0 を除外しないモデルを
構築することは可能ですが(>>517,521)、計算機工学の研究成果を元に設計された
言語だと「n個の集合の直積を考える、ここで n>=2」が暗黙のうちに認知されています
(なぜなら n=1 または n=2 の直積は、一般的には形式的に定義できない為)
ところが、こうした計算機工学の成果である n>=2 を無視し、
そんなのどうでもいいとばかりに「単なる不変な配列をタプルと命名する(>>516)」といふ
深淵の淵へ自ら飛び込んだ稀有な例が Python といふ次世代言語なんですよ
もしも「他のあらゆる言語では計算機工学の常識に沿って設計しているのに、
ある特定の言語ではそれを無視している」という具体例があれば、ご教示願います
たとえば「Python におけるタプルの命名」は、他の言語には見られない唯一無二の例です
526(1): 2018/07/31(火)18:21 ID:zfxDeDFf(2/4) AAS
A = { x | x <- A}
A × B = { <x, y> | x <- A, y <- B }
普通に定義できるがwww
527: 2018/07/31(火)18:36 ID:zoworXJJ(6/8) AAS
>>478
>それはそれとしてPythonはもっと関数を横に繋げられるようにしてくれ
>Elixirのパイプ演算子みたいな感じでさあ
いや、新たにパイプ演算子みたいな構文を追加しなくても、
オブジェクト指向言語の Python であれば、メソッドチェーンで実現できるよ
だって、Python を除く今時のオブジェクト指向言語では実現できていますから
その具体例が >>430 のリンク先のブログ主様が書いた簡潔なライブラリです
問題は、「なぜこれをやろうとしないのか?」という点です
もちろんライブラリの後方互換性は失われますが、
python2 から python3 で致命的な「後方互換性の断絶」を断行したのが
Python ですから、一貫性のあるAPIを提供するライブラリへの刷新もできたはず
さらに根本原因にさかのぼれば、「なぜ最初から一貫性のあるAPIを設計しなかったのか」
といふ疑念に突き当たります
だって、Python を除く今時のオブジェクト指向言語では設計できていますから
最後に背景原因を考察すると、Python 作者のGuido氏が:
API の設計において一貫性などはクソ
と考えていたのか、それとも:
オブジェクト指向が流行っていたから行き当たりばったりに設計した、
今は後悔している
と考えているのか興味深い
528: 2018/07/31(火)18:45 ID:zoworXJJ(7/8) AAS
>>526
>A = { x | x <- A}
えぇとぉ、{ x | x <- A} というのは単に集合 A を内包的に定義してるだけですから、
それは「1個の集合Aから構成される直積」ではなく単に「単純集合A」を定義してるだけです
あぁそうか、フェイトニスタには内包表記うんぬん以前に、数学の教養が欠けているのですね
ついうっかりしておりまして、大変失礼をば致しますた
529: 2018/07/31(火)19:00 ID:zoworXJJ(8/8) AAS
うっかりミスを訂正:
>>525
X:>(なぜなら n=1 または n=2 の直積は、一般的には形式的に定義できない為)
O:>(なぜなら n=1 または n=0 の直積は、一般的には形式的に定義できない為)
530: 2018/07/31(火)19:04 ID:zfxDeDFf(3/4) AAS
定義するのに集合と同じ定義では同じでは駄目というルールはないから間違っては無いwww
ちなみにn=0の直積は1元集合として定義できるとWikipediaにかいてあるwww
531: 2018/07/31(火)19:12 ID:x816LWzK(1) AAS
ウィキペに書いてあるとか言っちゃう人って・・・
532: 2018/07/31(火)19:36 ID:zfxDeDFf(4/4) AAS
正式な定義だと、直積の要素はペアの中にペアがある構造じゃないと駄目www
A × B × C = { <x, y, z> | x <- A, y <- B, z <- C }
↑の定義があってるのは日本のWikipediaだっけでしたwwww
これを使うにはn-fold Cartesian productという直積を拡張した奴じゃないとだめでした残念www
とくにn=1の時はそのままA=Aとちゃんとした本に書いてあるwwww
533: 2018/07/31(火)19:38 ID:xC1/ia91(1) AAS
今までの流れをまとめるとpythonはクソ。
TypeScriptが最強。という理解でよいでふか?
534: 2018/07/31(火)20:41 ID:CfkG900T(1/6) AAS
rustが最強
が正しい
535: 2018/07/31(火)21:51 ID:vpErkqT1(1/2) AAS
メソッドチェーンでもリスト内包でも異常なまでのテンポラリ変数嫌悪を感じるのだが、
無理にそんな書き方するくらいならテンポラリ変数使えや。
536: 2018/07/31(火)22:05 ID:CfkG900T(2/6) AAS
メソッドチェーンは無理なく書けるでしょ
変数はバグの餌だから忌諱するのは当然
537: 2018/07/31(火)22:09 ID:4i5flEMB(1) AAS
変数があって嬉しいのはデバッガでステップイン実行するときだけだな
そろそろステップの概念を卒業した新発想のデバッガが必要な時期にきてると思う
538: 2018/07/31(火)22:10 ID:/w6/tE8P(1) AAS
一時的な内部処理でまでステートを毛嫌いする純粋病の関数型信者と似ている
539(1): 2018/07/31(火)22:14 ID:hpcufxDD(1/2) AAS
お前らみたいなドカタなら兎も角、数学者がn=0やn=1に自然に拡張できる定義をn>=2に限定するわけないじゃん
ドカタここに極まれりだな
540(1): 2018/07/31(火)22:17 ID:10MH4XIN(1/3) AAS
メソッドチェーンってワンライナーと同類だろ
541(2): 2018/07/31(火)22:23 ID:CfkG900T(3/6) AAS
プログラマならバグの素を毛嫌いするのは当たり前じゃん
あくまでリーダビリティを損ねない範疇でだけども
542(1): 2018/07/31(火)22:24 ID:omk/SwPI(1/3) AAS
>>540
途中でクラスが変わるようなメソッド呼び出しを10個も20個もチェインするヤツは知らんが
コレクションに対する操作を数個チェインするぐらいは別に普通じゃね
543(1): 2018/07/31(火)22:27 ID:10MH4XIN(2/3) AAS
>>539
ちゃうやろおっさん
型理論的にはn>=2に拡張するために持ち出すのがpair
なのでn=0,1にpairを持ち出す必要がない
別の言い方をすると型理論的にはAと<A>は同じ
そこを区別するのがアドホックにpairを導入した言語ということ
組み込みの土方より
544(1): 2018/07/31(火)22:35 ID:omk/SwPI(2/3) AAS
>>541
たとえばコレクションのフィルター関数を実装するようなときに
一時的にミュータブルなコレクション作ってループ回して最後にイミュータブルにして返せばいいようなものを
最初の要素が条件満たさなかったらそれを落とした新しい不変コレクション作って返す関数の再帰で書くようなゴミが純粋病
545(1): 2018/07/31(火)22:37 ID:vpErkqT1(2/2) AAS
>>541
バグの元の一番大きなものは可読性のなさだぞ。
測りにくいものを一切無視するのがこの手の輩のダメなとこだな。
546: 2018/07/31(火)22:39 ID:CfkG900T(4/6) AAS
>>544
なにそれこわい
それってなんというテクニックなの?
547: 2018/07/31(火)22:39 ID:CfkG900T(5/6) AAS
>>545
だから可読性を損ねてはならないって書いてるじゃん
俺のレスは可読性低かったか?
548(1): 2018/07/31(火)22:43 ID:10MH4XIN(3/3) AAS
>>542
コレクションの操作ってのが具体的にどういうのかしらんけど
(おもちゃのような例は勘弁)
初見のコードだと返り値が何なのか副作用のありなしもよくわかんないのが嫌い
組み込み屋なんでそういうのに神経質なんですわ
549: 2018/07/31(火)22:46 ID:hpcufxDD(2/2) AAS
>>543
お前みたいなドカタには同じに見えるんだろうけど
違うものだよ
550(1): 2018/07/31(火)22:58 ID:omk/SwPI(3/3) AAS
>>548
おもちゃのような例とやらがなんだか知らんが
「配列にフィルタかけてマップしてソート」みたいなのはメソッドチェインで書くのが普通だし
プロダクトコードで頻出するし
言語組み込みとか標準ライブラリの範囲なので仕様知らないのは知らないほうが悪いで終了
551: 2018/07/31(火)23:33 ID:CfkG900T(6/6) AAS
組み込み屋だからコードが読めないって言い分が通用するのか
552(1): 2018/08/01(水)03:26 ID:KaW6n03Q(1/2) AAS
b=a.filter(hoge).sort(piyo)はaが変化しないけど
b=a.sort(piyo).filter(hoge)はaが変化するJavaScriptとかもあるし
気持ちがわからんでもない
上下前次1-新書関写板覧索設栞歴
あと 450 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.013s