スレタイ以外の言語もok
前スレ
次世代言語Part7[Go Rust Swift Kotlin TypeScript]
http://mevius.5ch.net/test/read.cgi/tech/1508403098/
次世代言語Part8[Haskell Rust Kotlin TypeScript]
■ このスレッドは過去ログ倉庫に格納されています
2017/12/01(金) 23:08:21.45ID:FxdZTiuZ
711デフォルトの名無しさん
2018/01/24(水) 11:58:57.43ID:apJvYiuW そういえばExcel方眼紙もある意味二次元をサポートしてるな
Excelの異常な人気の原因はそこか
Excelの異常な人気の原因はそこか
712デフォルトの名無しさん
2018/01/24(水) 19:16:29.18ID:CULWU8L2 義務教育に向けて親もプログラミングやっときたい、どれが良い?
Pythonとかよく目にするけど、と聞かれた。
どう答える?
Pythonとかよく目にするけど、と聞かれた。
どう答える?
713デフォルトの名無しさん
2018/01/24(水) 19:30:37.89ID:D4W5cGwF 相手が挙げて来た言語のメリットを適当に言ってそのまま勧めれば良い
親が教えるためにやる言語なんて何でも良いし、違いがわかる頃には子供は卒業してる
選ぶのも面倒くさい
親が教えるためにやる言語なんて何でも良いし、違いがわかる頃には子供は卒業してる
選ぶのも面倒くさい
714デフォルトの名無しさん
2018/01/24(水) 19:50:08.15ID:N2tfbGLJ715デフォルトの名無しさん
2018/01/24(水) 20:27:01.77ID:0VEJNLN9716デフォルトの名無しさん
2018/01/24(水) 20:29:15.40ID:c9tmIiAF 子供にはScratchをやらせることになるらしいから、親もScratchをやればいいじゃん
>>712
やはり再帰的思考が勘所かと考えていますので、scheme をお勧めしようかと思っています
やはり再帰的思考が勘所かと考えていますので、scheme をお勧めしようかと思っています
718デフォルトの名無しさん
2018/01/25(木) 01:24:29.68ID:mR4+Kf/H719デフォルトの名無しさん
2018/01/25(木) 02:32:13.16ID:uqKgsWDy720デフォルトの名無しさん
2018/01/25(木) 12:45:10.82ID:R+9hEl/X >>711
excelは関数型言語だ、と言う人々も居るくらいだからな(笑)
excelは関数型言語だ、と言う人々も居るくらいだからな(笑)
721デフォルトの名無しさん
2018/01/25(木) 14:09:07.50ID:ArcwQAgj Excelはビジュアルリアクティブプログラミング環境と言えばまあ間違ってはないんだけど
二次元配列以外の構造の扱いが難しすぎて、学習用にしてしまうと
他のデータ構造を学ぶ機会がないまま何でも二次元配列に落としこむ悪癖がついてしまいそうで
二次元配列以外の構造の扱いが難しすぎて、学習用にしてしまうと
他のデータ構造を学ぶ機会がないまま何でも二次元配列に落としこむ悪癖がついてしまいそうで
722デフォルトの名無しさん
2018/01/25(木) 14:31:25.81ID:NsBjyJ7C >>721
人間が無理なく扱えるデータは二次元の表が限界なんだよ
考えてみろ
お前がよく使う構造体やクラスのリストや辞書は実質二次元の表だろ
オブジェクト指向では直接深く階層掘ったアクセスは嫌われるだろ?
なんだかんだ格好いい理屈を付けても、結局人間にはExcelのデータ構造が馴染むんだよ
人間が無理なく扱えるデータは二次元の表が限界なんだよ
考えてみろ
お前がよく使う構造体やクラスのリストや辞書は実質二次元の表だろ
オブジェクト指向では直接深く階層掘ったアクセスは嫌われるだろ?
なんだかんだ格好いい理屈を付けても、結局人間にはExcelのデータ構造が馴染むんだよ
723デフォルトの名無しさん
2018/01/25(木) 14:38:39.64ID:ArcwQAgj724デフォルトの名無しさん
2018/01/25(木) 14:41:15.02ID:NsBjyJ7C >>723
再帰なんか同じ表の行番号を持たせるだけだろ
再帰なんか同じ表の行番号を持たせるだけだろ
725デフォルトの名無しさん
2018/01/25(木) 17:16:48.70ID:sWzOL5fe 3次元以上を汎用に使おうとするとSQLみたいだったり tensor flow だったり
かなりめんどくさいインターフェイスになるのはしゃーない。
かなりめんどくさいインターフェイスになるのはしゃーない。
726デフォルトの名無しさん
2018/01/25(木) 17:55:47.33ID:R+9hEl/X まぁ、Haskellで作られたものより、Excelで作られたモノのほうが多いしな(笑)
純関数型(笑)
純関数型(笑)
727デフォルトの名無しさん
2018/01/25(木) 20:01:29.48ID:0RuyxExF >>719
このようなtypoを防ぐためにも強い型付けが必要なんだよ
このようなtypoを防ぐためにも強い型付けが必要なんだよ
729デフォルトの名無しさん
2018/01/25(木) 22:42:04.62ID:uaT/xfzY flake8を使えば
730デフォルトの名無しさん
2018/01/26(金) 01:29:50.06ID:2fuI1BST headerをincludeしてチェックする言語は簡単だけど
コンパイル済みのライブラリの中身を見て名前をチェックする言語は大変そうだ
コンパイル後も情報を全部残しておかないといけない
コンパイル済みのライブラリの中身を見て名前をチェックする言語は大変そうだ
コンパイル後も情報を全部残しておかないといけない
731デフォルトの名無しさん
2018/01/26(金) 16:21:27.98ID:Zz9xFin2 変数宣言を省略できる機能(スペルミスが検出できない)と、型付けは別だよね?
昔のFortranやBASICは変数はいきなり使っていいけど名前で型が決まる静的型だったし
昔のFortranやBASICは変数はいきなり使っていいけど名前で型が決まる静的型だったし
732デフォルトの名無しさん
2018/01/26(金) 16:36:58.42ID:G7ZCkEjP 宣言がない変数は、省略ではなく他のファイルで宣言している可能性がある
そのファイルをincludeするか、全てのファイルを検索する必要がある
そのファイルをincludeするか、全てのファイルを検索する必要がある
733デフォルトの名無しさん
2018/01/27(土) 13:04:44.52ID:7uBpZq93 レベル下がったなぁ
734デフォルトの名無しさん
2018/01/27(土) 14:31:34.34ID:fjEoblON 下がってから言っても遅いな
レベル高かった頃に、なにこれ高いって評価できる奴が勝つ
レベル高かった頃に、なにこれ高いって評価できる奴が勝つ
735デフォルトの名無しさん
2018/01/27(土) 14:40:54.49ID:7K+kXdeY まぁ、その時から無駄なつっかかりしかできない奴ばっかだったし仕方ないんだろうな。
今更option explicitじみた話に戻るとは。
今更option explicitじみた話に戻るとは。
736デフォルトの名無しさん
2018/01/27(土) 22:13:06.80ID:RNgYnDaT >>734
天井Lみたいなこと言うな
天井Lみたいなこと言うな
737デフォルトの名無しさん
2018/01/28(日) 15:51:11.09ID:CWAHXL7y 自分で書いたコードが三ヵ月後に読めないっていうやつは素人
プロは三ヵ月後の記憶喪失を織り込んでる
プロは三ヵ月後の記憶喪失を織り込んでる
738デフォルトの名無しさん
2018/01/28(日) 23:40:40.83ID:ZERk9zo5 保守受注独占するために汚くするんやぞ
739デフォルトの名無しさん
2018/01/29(月) 22:16:09.55ID:4480+Jxl そういう足を引っ張る人には保守受注の代わりに
ベーシックインカムをあげたらいいんじゃないかと言われている
足を引っ張る悪人より善良な怠け者の方がいい
ベーシックインカムをあげたらいいんじゃないかと言われている
足を引っ張る悪人より善良な怠け者の方がいい
740デフォルトの名無しさん
2018/01/30(火) 01:45:49.07ID:ZcZnTiUX しょーもない理想論はいらんねん
こっちはきっちり世間様に仕事回してんねんで
頭の悪いガキは黙っとき
こっちはきっちり世間様に仕事回してんねんで
頭の悪いガキは黙っとき
741デフォルトの名無しさん
2018/01/30(火) 01:47:45.52ID:ZcZnTiUX ソースがきれい → オタクの自己満足
ソースがきたない → 工数取れて残業代も出る、みんなニッコリ
これが現実やで
ソースがきたない → 工数取れて残業代も出る、みんなニッコリ
これが現実やで
742デフォルトの名無しさん
2018/01/30(火) 10:52:36.78ID:2Eamtv1n そんなことしてるから他国の技術に駆逐されるんだよ。。
743デフォルトの名無しさん
2018/01/30(火) 14:43:26.40ID:xaKIrtPB その理屈だと、まるで必要もない次世代言語で書くやつみたいだな。
汚いソース書くやつは。
汚いソース書くやつは。
744デフォルトの名無しさん
2018/01/31(水) 23:31:38.87ID:Rp2Mauf0 次世代言語で書くだけならいいんだよ
故意に汚くするとはいってないから、改善する可能性がある
故意とただの偶然とでは罪の重さが違う
故意に汚くするとはいってないから、改善する可能性がある
故意とただの偶然とでは罪の重さが違う
745デフォルトの名無しさん
2018/02/01(木) 08:43:21.74ID:AVafL46K 故意にその言語で書いてる以上、もう偶然でもなんでもないだろ。
ちゃんとその言語のメリット、デメリット含めて布教してから使うべきだと思うが。
ちゃんとその言語のメリット、デメリット含めて布教してから使うべきだと思うが。
746デフォルトの名無しさん
2018/02/01(木) 11:05:23.20ID:niJJgdbA ちゃんとする可能性があるならいい
その可能性をわざと排除するなら悪質
最初からそう言ってるんだろ
その可能性をわざと排除するなら悪質
最初からそう言ってるんだろ
747デフォルトの名無しさん
2018/02/01(木) 13:10:20.37ID:Bj9uVLC2 まあ大体がカスな開発体制に問題があるところに
新しい言語なら問題解決できる!
とかめちゃくちゃな広告が出回って導入、失敗っつークソパターンがここ20,30年の間繰り返されてるわけだからな。
新しい言語なら問題解決できる!
とかめちゃくちゃな広告が出回って導入、失敗っつークソパターンがここ20,30年の間繰り返されてるわけだからな。
748デフォルトの名無しさん
2018/02/01(木) 15:37:35.21ID:suqSmKNo749デフォルトの名無しさん
2018/02/03(土) 02:04:53.95ID:VC8JN1NA JSに依存するのはいいがGHCがな
もしもF#がGHCに依存していたら面倒臭いじゃないか
もしもF#がGHCに依存していたら面倒臭いじゃないか
750デフォルトの名無しさん
2018/02/12(月) 17:15:27.49ID:NkUQn5xe751デフォルトの名無しさん
2018/02/12(月) 17:16:33.56ID:NkUQn5xe752デフォルトの名無しさん
2018/02/14(水) 20:27:03.68ID:SwEfqZxS ASM.net
753デフォルトの名無しさん
2018/02/15(木) 23:40:47.93ID:yLr3787F clojure やれよ?
754デフォルトの名無しさん
2018/02/16(金) 00:35:29.80ID:JK/MGoqE755デフォルトの名無しさん
2018/02/18(日) 01:30:59.56ID:5P/pcqvC >751
これ初めて見た
これ初めて見た
756デフォルトの名無しさん
2018/02/18(日) 15:38:35.68ID:CW1UlThv なんかTypeScriptのジェネリクスがどんどん変態じみてきたんだけど、ジェネリクスってこういうもんなの?
これならgoに乗んなくていいなぁ
これならgoに乗んなくていいなぁ
757デフォルトの名無しさん
2018/02/18(日) 15:51:20.83ID:AYB00j0e >>756
欲求は際限なく広がって、そしてゴミの塊みたいな仕様になるもんだ。
ずっと前からTypeScriptは手段と目的をどっかで履き違えたと言ってたが、最近シャレになってない。
Goの割り切りは納得に値するよ。あったら便利なのは認めるけど。
Cppのtemplateみたいに、それだけでチューリング完全になってしまう前に、最初から入れない、やるならgenerateで別立てで勝手にやれと言う割り切りしたのは英断だと思う。
欲求は際限なく広がって、そしてゴミの塊みたいな仕様になるもんだ。
ずっと前からTypeScriptは手段と目的をどっかで履き違えたと言ってたが、最近シャレになってない。
Goの割り切りは納得に値するよ。あったら便利なのは認めるけど。
Cppのtemplateみたいに、それだけでチューリング完全になってしまう前に、最初から入れない、やるならgenerateで別立てで勝手にやれと言う割り切りしたのは英断だと思う。
758デフォルトの名無しさん
2018/02/18(日) 17:25:12.30ID:CW1UlThv >>757
ジェネリクス関連のエラーメッセージは本当に意味がわかんないよね。
ユーザー視点ではimmutable.jsとかでも補完が効くのは便利になっていいんだけど、
いざ型関連エラーが出た時にエラーメッセージから原因を予測するのが困難なんだよね。
rustもあんな感じなの?
正直TypeScriptはエラーメッセージをわかりやすくする方向に軌道修正頼んます。
ジェネリクス関連のエラーメッセージは本当に意味がわかんないよね。
ユーザー視点ではimmutable.jsとかでも補完が効くのは便利になっていいんだけど、
いざ型関連エラーが出た時にエラーメッセージから原因を予測するのが困難なんだよね。
rustもあんな感じなの?
正直TypeScriptはエラーメッセージをわかりやすくする方向に軌道修正頼んます。
759デフォルトの名無しさん
2018/02/18(日) 18:16:19.28ID:WV1p31YW >>758
変性注釈とか、やりたいことはわかるし、なぜ必要かもわかるが、一方でjsとどんどん乖離していって、jsのプロジェクトと繋げるときに結局any使うことになったり、グダグダも良いところだと思う。
TSだけでもの作るんなら、良いと思うが、そうなるとJavaScriptにコンパイルできる必要もなく、逆に早くwasmなんかに対応しろとか、ネイティブにTSの良いところを保ったまま実行できる環境出せとか、色々文句が言いたいけど、
全部ほったらかしにされてるからな。
ずーっと言語の改良してる。
変性注釈とか、やりたいことはわかるし、なぜ必要かもわかるが、一方でjsとどんどん乖離していって、jsのプロジェクトと繋げるときに結局any使うことになったり、グダグダも良いところだと思う。
TSだけでもの作るんなら、良いと思うが、そうなるとJavaScriptにコンパイルできる必要もなく、逆に早くwasmなんかに対応しろとか、ネイティブにTSの良いところを保ったまま実行できる環境出せとか、色々文句が言いたいけど、
全部ほったらかしにされてるからな。
ずーっと言語の改良してる。
760デフォルトの名無しさん
2018/02/18(日) 18:37:05.69ID:Ct2k6iqr 一方的にjsのライブラリを使用する分には問題ないだろうし、その資産にただ乗りできることこそ
jsとの相互運用性を維持する理由だろう。
言語仕様としては奇麗だけどライブラリが揃わなくて実用性がいまいち、みたいになるよりは。
jsとの相互運用性を維持する理由だろう。
言語仕様としては奇麗だけどライブラリが揃わなくて実用性がいまいち、みたいになるよりは。
761デフォルトの名無しさん
2018/02/18(日) 19:25:55.39ID:WV1p31YW >>760
jsのライブラリ側が自由な感じのライブラリだと定義ファイルが無茶苦茶ややこしいものになったりするし、なかなか微妙だけどな。
ライブラリが揃わなくてイマイチ、は確かに無いか。ほとんどタダ乗り出来るからなぁ。
jsのライブラリ側が自由な感じのライブラリだと定義ファイルが無茶苦茶ややこしいものになったりするし、なかなか微妙だけどな。
ライブラリが揃わなくてイマイチ、は確かに無いか。ほとんどタダ乗り出来るからなぁ。
762デフォルトの名無しさん
2018/02/18(日) 22:15:41.08ID:+Qsqi9wm >>761
せめて関数のオーバーロード定義みたいなことが出来ればコードが整理しやすくなると思うんだよね。
つまり
export function h(name, attributes /*, ...rest*/) {
// 省略
return typeof name === "function"
? name(attributes || {}, children)
: {
nodeName: name,
attributes: attributes || {},
children: children,
key: attributes && attributes.key
}
}
ってあった時に
export function h(name: string, attributes:obj /*, ...rest*/) {}
export function h(nextFunc: (attributes:obj)=>void, attributes:obj /*, ...rest*/) {}
みたく出来れば型定義自体も綺麗にできる気がする。
でも今のTypeScriptってこれできんよね。
せめて関数のオーバーロード定義みたいなことが出来ればコードが整理しやすくなると思うんだよね。
つまり
export function h(name, attributes /*, ...rest*/) {
// 省略
return typeof name === "function"
? name(attributes || {}, children)
: {
nodeName: name,
attributes: attributes || {},
children: children,
key: attributes && attributes.key
}
}
ってあった時に
export function h(name: string, attributes:obj /*, ...rest*/) {}
export function h(nextFunc: (attributes:obj)=>void, attributes:obj /*, ...rest*/) {}
みたく出来れば型定義自体も綺麗にできる気がする。
でも今のTypeScriptってこれできんよね。
763デフォルトの名無しさん
2018/02/18(日) 22:19:58.51ID:+Qsqi9wm あと詳しい人に聞きたいんだけどやっぱりジェネリクス一つとっても
言語によって全然仕様が違うのかね?
だとしたらGoはコードジェネレートと組み合わせも考慮したちょうどいい便利さの
ジェネリクスというのも考えていて実装を見送ってるのかも。
でもGoにはそれ以前にnull安全を実装してほしい気がするが。
レシーバがnullの可能性があったりnull周りに罠があるんだよねGoは
言語によって全然仕様が違うのかね?
だとしたらGoはコードジェネレートと組み合わせも考慮したちょうどいい便利さの
ジェネリクスというのも考えていて実装を見送ってるのかも。
でもGoにはそれ以前にnull安全を実装してほしい気がするが。
レシーバがnullの可能性があったりnull周りに罠があるんだよねGoは
764デフォルトの名無しさん
2018/02/18(日) 22:47:38.32ID:Ct2k6iqr >>762
オーバーロードってまさにそんな感じでできた気がするが。
オーバーロードってまさにそんな感じでできた気がするが。
765デフォルトの名無しさん
2018/02/18(日) 23:30:02.62ID:/vdt0GUK ジェネリクスは途中から入れるようなもんじゃないと思うがね
型自体はフラットな構造で、階層構造はHaskellみたいに型の境界(型クラス)として作ると綺麗にまとまりやすい
型≒クラスで、型自体に階層構造を作ってるような言語だと、ジェネリクスの使い方が面倒よ
Javaの<T extends ClassFoo>とかC#のin/outとかは元の型システムに合わせて入れないといけない面倒な部分
TSの元々の型システムはよく知らないけど、ダックタイピングできるならジェネリクス入れる必要がないし、
クラスがあったり型に階層構造があるなら面倒なのはしょうがない
型自体はフラットな構造で、階層構造はHaskellみたいに型の境界(型クラス)として作ると綺麗にまとまりやすい
型≒クラスで、型自体に階層構造を作ってるような言語だと、ジェネリクスの使い方が面倒よ
Javaの<T extends ClassFoo>とかC#のin/outとかは元の型システムに合わせて入れないといけない面倒な部分
TSの元々の型システムはよく知らないけど、ダックタイピングできるならジェネリクス入れる必要がないし、
クラスがあったり型に階層構造があるなら面倒なのはしょうがない
766デフォルトの名無しさん
2018/02/18(日) 23:45:12.91ID:LabDqOSD むしろJavaScriptさんが悔い改めるべきではないか?
767デフォルトの名無しさん
2018/02/18(日) 23:52:24.01ID:AYB00j0e Goでレシーバがnilになれるのは案外便利だぞ。
あれは罠ではない。
型や型クラスに階層構造持つのはいつでも便利なわけではないと言うか、結局コンパイラ都合を押し付けられてるだけな気がするけどな。
その辺、後出しジャンケンできるGoのinterfaceの方が楽な事が多い。
あれは罠ではない。
型や型クラスに階層構造持つのはいつでも便利なわけではないと言うか、結局コンパイラ都合を押し付けられてるだけな気がするけどな。
その辺、後出しジャンケンできるGoのinterfaceの方が楽な事が多い。
768デフォルトの名無しさん
2018/02/19(月) 00:07:59.55ID:B+b1Q4Nq ジェネリクスは、コード上別の箇所に出現する型Aと型Bが同一であることを明示することにより、型情報の損失を避けるために使うんだよ
ダックタイピングは関係ない
C++やHaskellをやってる人は>>765みたいに混同しがちだけど、JavaやC#だと多態とGenericsをわりとはっきり区別する文化がある
TypeScriptのGenericsも同様に、型の同一性を示すマーカーとしての性格が強いね
ダックタイピングは関係ない
C++やHaskellをやってる人は>>765みたいに混同しがちだけど、JavaやC#だと多態とGenericsをわりとはっきり区別する文化がある
TypeScriptのGenericsも同様に、型の同一性を示すマーカーとしての性格が強いね
769デフォルトの名無しさん
2018/02/19(月) 01:32:35.15ID:1YgzgKOj 「型が同一である」の定義がわからない
犬型と猫型は異なるともいえるし同じ動物型ともいえる
この辺の仕様を捨ててからジェネリクスを追加するのが基本
もし両方入れてゴミ言語ができたら
捨てられないのが原因ともいえるし追加したのが原因ともいえる
犬型と猫型は異なるともいえるし同じ動物型ともいえる
この辺の仕様を捨ててからジェネリクスを追加するのが基本
もし両方入れてゴミ言語ができたら
捨てられないのが原因ともいえるし追加したのが原因ともいえる
770デフォルトの名無しさん
2018/02/19(月) 01:40:02.40ID:U+qaWnxw それに対して型の制限を型でなくしたのがHaskellの型クラスやRustのtraitだし、型を分解する事で非同一性を示すのが多くの言語にあるパターンマッチじゃないの
771デフォルトの名無しさん
2018/02/19(月) 07:49:12.96ID:HJ1z9rHd 型階層のある言語でアドホックに型クラスをやりたいなら別途Comparableみたいなインスタンスを受け取るようにするだけだろ
ジェネリクスと区別するっていうのは端的にはそういうことで、実際に引数として明確に分かれることになる
JavaやC#, TSだと型引数に制約を付けることで中途半端に似たことができてしまうのが微妙に直行してなくてダサいけど、それは基本的にあまり使われない機能
ジェネリクスと区別するっていうのは端的にはそういうことで、実際に引数として明確に分かれることになる
JavaやC#, TSだと型引数に制約を付けることで中途半端に似たことができてしまうのが微妙に直行してなくてダサいけど、それは基本的にあまり使われない機能
772771
2018/02/19(月) 07:54:42.45ID:HJ1z9rHd すまんComparatorの間違いだ
補足しとくと、直行してないというのは例えば具体的には <T extends Comparable> と (T obj, Comparator<T> comparator) みたいなののことな
補足しとくと、直行してないというのは例えば具体的には <T extends Comparable> と (T obj, Comparator<T> comparator) みたいなののことな
773デフォルトの名無しさん
2018/02/19(月) 09:53:32.16ID:isUwiiOH >>767
便利さを教えてほしいな。
純粋なnilと型があるけど中味はnilって正直わかりづらくないかな。
reflectionのお勉強をしないと理解できない。
Goのインターフェースは後出しジャンケンってのは面白いな。パクらせてもらおう
便利さを教えてほしいな。
純粋なnilと型があるけど中味はnilって正直わかりづらくないかな。
reflectionのお勉強をしないと理解できない。
Goのインターフェースは後出しジャンケンってのは面白いな。パクらせてもらおう
774デフォルトの名無しさん
2018/02/19(月) 09:58:27.89ID:isUwiiOH775デフォルトの名無しさん
2018/02/19(月) 12:10:56.39ID:BdVjRyEG >>773
それがnilでも、メソッドチェーンできる。
だから、errを伝搬するのに便利。
末尾のDoなんかで、本当の結果,errorとして取り出せば良いよ。
いちいち失敗構造体なんぞ書かんでも良い。
Nullable的に使える。
どっちかというと下回り書いてるときに便利かも。
それがnilでも、メソッドチェーンできる。
だから、errを伝搬するのに便利。
末尾のDoなんかで、本当の結果,errorとして取り出せば良いよ。
いちいち失敗構造体なんぞ書かんでも良い。
Nullable的に使える。
どっちかというと下回り書いてるときに便利かも。
776デフォルトの名無しさん
2018/02/19(月) 12:44:49.19ID:g9K5jJLr777デフォルトの名無しさん
2018/02/19(月) 14:19:03.08ID:x9oxab6h >>775
なんかサンプルある?とょっとイメージがつかめない。nilでメソッドチェーンができるのはわかるけど、それがメリットになるかな?
結局nilを、返してるメソッドがエラー状態な訳で、そいつが暫定的な値を返せばメソッドチェーンはできるよね。
なんかサンプルある?とょっとイメージがつかめない。nilでメソッドチェーンができるのはわかるけど、それがメリットになるかな?
結局nilを、返してるメソッドがエラー状態な訳で、そいつが暫定的な値を返せばメソッドチェーンはできるよね。
778デフォルトの名無しさん
2018/02/19(月) 15:23:40.87ID:FUvFB9Jm ハスケルのメイビーみたいなことだろうな。
779デフォルトの名無しさん
2018/02/19(月) 16:10:57.83ID:BdVjRyEG >>777
暫定的なオブジェクトに、レシーバ書いてくの?
Hoge().Get().ReadAll().AsString()
で、毎度nilチェックとか暫定レスポンスのオブジェクト置いてたら非効率じゃん。
ToXXX以外の関数が、Hoge()の返す型やinterfaceを返せば楽じゃない?
Getに失敗したかReadAllに失敗したかが必要ならまた別だろうけど、だいたいひとからげにして問題ない事の方が多い。
暫定的なオブジェクトに、レシーバ書いてくの?
Hoge().Get().ReadAll().AsString()
で、毎度nilチェックとか暫定レスポンスのオブジェクト置いてたら非効率じゃん。
ToXXX以外の関数が、Hoge()の返す型やinterfaceを返せば楽じゃない?
Getに失敗したかReadAllに失敗したかが必要ならまた別だろうけど、だいたいひとからげにして問題ない事の方が多い。
780デフォルトの名無しさん
2018/02/19(月) 18:59:46.08ID:esiJbF27 >>779
error情報を最初から諦めるってことね。
とにかく最終結果がnilだからメソッドチェーンのどっかで失敗してんだろーなー。くらいの感じなのか。
標準ライブラリでそういう実装してるのあるかな?reflect.Valueとかかな。
あれメソッドチェーンできる代わりに不正なメソッド操作するとpanicしててなかなかしんどい。
error情報を最初から諦めるってことね。
とにかく最終結果がnilだからメソッドチェーンのどっかで失敗してんだろーなー。くらいの感じなのか。
標準ライブラリでそういう実装してるのあるかな?reflect.Valueとかかな。
あれメソッドチェーンできる代わりに不正なメソッド操作するとpanicしててなかなかしんどい。
781デフォルトの名無しさん
2018/02/19(月) 19:03:08.21ID:BdVjRyEG >>780
ちょっと違うけど、protobufあたりはもう少し有意義に使ってたな。
ちょっと違うけど、protobufあたりはもう少し有意義に使ってたな。
782デフォルトの名無しさん
2018/02/19(月) 19:14:13.94ID:esiJbF27 流れをぶった切って悪いけどTypeScriptはさすがMS。開発リソースたっぷり。という余裕を感じる。vscodeと一緒に毎週くらいの勢いでアップデート繰り返してる。
ジェネリクスの気持ち悪さもエラーメッセージがわかりやすく進化する感じで直してくれれば全然良いので頑張ってもらいたい。
ジェネリクスの気持ち悪さもエラーメッセージがわかりやすく進化する感じで直してくれれば全然良いので頑張ってもらいたい。
783デフォルトの名無しさん
2018/02/19(月) 19:17:59.63ID:u7QgBPEb goのことは全然知らないんだが、型付きnilとやらは実行時ディスパッチしてくれて
その型のメソッドにnil引数付けてやってくるという理解でOK?
その型のメソッドにnil引数付けてやってくるという理解でOK?
784デフォルトの名無しさん
2018/02/19(月) 20:22:12.51ID:BwjO59+V まずメソッドではなくて、ちょっと変わった構文のの関数ぐらいに受け取ったほうが良いかも。
Foo.Bar()は
Bar(Foo)と、
Foo.Bar(a,b)
は
Bar(Foo,a,b)と同じぐらいの意味。
だからFooがnilでも(ポインタに対してのレシーバであれば)呼べる。
Foo.Bar()は
Bar(Foo)と、
Foo.Bar(a,b)
は
Bar(Foo,a,b)と同じぐらいの意味。
だからFooがnilでも(ポインタに対してのレシーバであれば)呼べる。
785デフォルトの名無しさん
2018/02/19(月) 23:02:26.53ID:cDVYUoQ2 やはりメソッドチェーンは何回も値 (nil) を返すのが気になる
Haskellでは
((Nothing >>= f) >>= g) >>= h
こうするとNothingのパターンマッチを3回するのに対し
Nothing >>= (\ y -> f y >>= (\ z -> g z >>= h))
これなら1回だけ
Haskellでは
((Nothing >>= f) >>= g) >>= h
こうするとNothingのパターンマッチを3回するのに対し
Nothing >>= (\ y -> f y >>= (\ z -> g z >>= h))
これなら1回だけ
786デフォルトの名無しさん
2018/02/19(月) 23:09:11.19ID:g9K5jJLr787デフォルトの名無しさん
2018/02/19(月) 23:41:51.38ID:cDVYUoQ2 記号がなくても右結合がきもい
h(g(f(x))は右結合
x.f().g().h()は左結合
h(g(f(x))は右結合
x.f().g().h()は左結合
788デフォルトの名無しさん
2018/02/20(火) 00:33:09.75ID:uyRcVPMC こんなのをありがたがるくらいならCommonLisp書くわ。
789デフォルトの名無しさん
2018/02/20(火) 01:53:25.83ID:IMJo1v/e その気持ちは分からんでもない
790デフォルトの名無しさん
2018/02/20(火) 05:20:12.69ID:o3fs2Zzy goの場合nilの場合分けを関数の中でしなくちゃいけないわけだろ。
それが嫌だからモナドができたわけだからな。
メソッドチェーンも嫌だからasyn/awaitとかdo構文が出来たわけで
全部が劣っているな。
それが嫌だからモナドができたわけだからな。
メソッドチェーンも嫌だからasyn/awaitとかdo構文が出来たわけで
全部が劣っているな。
791デフォルトの名無しさん
2018/02/20(火) 17:49:07.93ID:uyRcVPMC 秀でるのと、こねくりまわすのは違うからな。
原理上、変態構文と純でも何でもないモナドで出来るとか抜かすぐらいなら、nilチェックするほうがマシ。
原理上、変態構文と純でも何でもないモナドで出来るとか抜かすぐらいなら、nilチェックするほうがマシ。
792デフォルトの名無しさん
2018/02/20(火) 18:26:18.82ID:SK024iMW コンパイラはモナドをコンパイルエラーにしない
一部の人間は忖度してモナドを自主規制する
コンパイラと人間はどっちが正しいかというだけの話
一部の人間は忖度してモナドを自主規制する
コンパイラと人間はどっちが正しいかというだけの話
793デフォルトの名無しさん
2018/02/21(水) 18:12:35.61ID:WKR1veUF 機械と人間の両方に指図されるのは不自由過ぎる
両方採用するのは過激派
どっちか一つだけにした方が中道という可能性がある
両方採用するのは過激派
どっちか一つだけにした方が中道という可能性がある
794デフォルトの名無しさん
2018/02/21(水) 19:30:26.52ID:BxLkRHyS goにいまさらnil安全は無理かな?
python3並の断絶が起きちゃう?
python3並の断絶が起きちゃう?
795デフォルトの名無しさん
2018/02/21(水) 20:32:34.11ID:qR5uNCei そもそもnil安全にする必要もない。
その変数に型的にnilが入ることが無かろうがあろうが、
他の言語のnullとはちと違うレベルでnilを取り扱える。
タプルで返す前提だと大した問題には無いと言うか。
他の言語は、nullに本来のその型が持つ意味以上の意味を与えてしまうからわざわざnull安全にしないといかんのでは?
その変数に型的にnilが入ることが無かろうがあろうが、
他の言語のnullとはちと違うレベルでnilを取り扱える。
タプルで返す前提だと大した問題には無いと言うか。
他の言語は、nullに本来のその型が持つ意味以上の意味を与えてしまうからわざわざnull安全にしないといかんのでは?
796デフォルトの名無しさん
2018/02/22(木) 02:26:39.63ID:zGB/N5H/ タプルで値が返せるから必要ないってただの理屈の上の話で、エラーチェック漏れをおこしたり、エラーチェックしててもnilの入った変数を次の処理に引き継ぐミスは起こり得るだろ。それを防ぐのがnil安全なわけで。
797デフォルトの名無しさん
2018/02/22(木) 04:32:43.91ID:+RpZ2cWG798デフォルトの名無しさん
2018/02/22(木) 05:41:36.72ID:ePT/3hrM nilに余計な意味を与えないための基準がnil安全なのでは?
799デフォルトの名無しさん
2018/02/22(木) 08:14:10.74ID:p8NiYEqx 同僚のコトリンのコードがビックリマークだらけで、こりゃだめだと思った
800デフォルトの名無しさん
2018/02/22(木) 08:54:55.92ID:MB1I4+Gh だから、便利に使わなければ良いと思うんだが。
参照にしない限りnilにはなれないし。
参照にしない限りnilにはなれないし。
801デフォルトの名無しさん
2018/02/22(木) 12:53:25.00ID:+RpZ2cWG802デフォルトの名無しさん
2018/02/22(木) 13:11:15.71ID:0cZDh8Nv 修理しない自由 vs. 修理する権利
803デフォルトの名無しさん
2018/02/22(木) 14:54:41.89ID:ei88pKkZ >>798
基準がどうこうってnil安全な言語ってのがわかっていないのかな?
設計思想とかの話じゃなく言語仕様の話をしてんだけど。
つまり変数に明示しない限りnilを代入不可能な変数が作れるってのか
nil安全な言語ってこと。
TypeScriptなら
let some?:number = null; // OK
let some:number = null; // NG
ってこと someにnullが入っている可能性をコンパイル時点で排除できる。
Goだって
func hoge(s *Some) {
// sが絶対nullじゃないことが保証されるスコープ
}
func (s? *Some) SomeFunc() {
if (s != null) {
hoge(s)
}
hoge(s) // NG コンパイルエラー sがnullである可能性が残っている
}
みたいな感じで書ける。?が使えると仮定
基準がどうこうってnil安全な言語ってのがわかっていないのかな?
設計思想とかの話じゃなく言語仕様の話をしてんだけど。
つまり変数に明示しない限りnilを代入不可能な変数が作れるってのか
nil安全な言語ってこと。
TypeScriptなら
let some?:number = null; // OK
let some:number = null; // NG
ってこと someにnullが入っている可能性をコンパイル時点で排除できる。
Goだって
func hoge(s *Some) {
// sが絶対nullじゃないことが保証されるスコープ
}
func (s? *Some) SomeFunc() {
if (s != null) {
hoge(s)
}
hoge(s) // NG コンパイルエラー sがnullである可能性が残っている
}
みたいな感じで書ける。?が使えると仮定
804デフォルトの名無しさん
2018/02/22(木) 16:43:44.83ID:ePT/3hrM >>803
しょぼ!
その例はnull安全の中でも一番弱いやつ。
書き方を気をつければnullを避けられるってだけ。
本物のnull安全はスコープ単位ではなく、型検査が通ればプログラムにnullによる誤りを完全に排除されるんだよ。Haskellのように。
しょぼ!
その例はnull安全の中でも一番弱いやつ。
書き方を気をつければnullを避けられるってだけ。
本物のnull安全はスコープ単位ではなく、型検査が通ればプログラムにnullによる誤りを完全に排除されるんだよ。Haskellのように。
805デフォルトの名無しさん
2018/02/22(木) 17:06:16.89ID:zGB/N5H/806デフォルトの名無しさん
2018/02/22(木) 18:59:35.60ID:MB1I4+Gh >>804
haskellはそんな事の前にもっと解決すべき問題を解決できる言語になってくれ。
haskellはそんな事の前にもっと解決すべき問題を解決できる言語になってくれ。
807デフォルトの名無しさん
2018/02/23(金) 01:19:34.60ID:i8nFKqus 動的型で解決できる問題はすべて静的型で解決できるし
もしこれが嘘八百だと証明されたとしてもそれはそれで大きな成果だし
いずれにせよHaskellは静的型の歴史に貢献している
もしこれが嘘八百だと証明されたとしてもそれはそれで大きな成果だし
いずれにせよHaskellは静的型の歴史に貢献している
808デフォルトの名無しさん
2018/02/23(金) 01:23:42.56ID:KFd5WK6x でも需要はハケスル(笑)<<<<<PHPで圧倒的な件w
809デフォルトの名無しさん
2018/02/23(金) 08:46:52.58ID:LZyM23a9 歴史に貢献するって、ラテン語でもあるまいし。
実用言語にしてよ。
実用言語にしてよ。
810デフォルトの名無しさん
2018/02/23(金) 10:35:29.52ID:fGTUWBf8 実在するだけでは不満か
実在すら怪しいものがあったらもっと不満だろ
実用よりも実在の方がモチベーションが強い
実在すら怪しいものがあったらもっと不満だろ
実用よりも実在の方がモチベーションが強い
811デフォルトの名無しさん
2018/02/23(金) 10:45:07.36ID:HJaUFAvs >>809
ラテン語は良い喩えだね。印欧語ヒエラルキーの上の方にいるし。
俗ラテン語を見て、どこが欠落してるかの見通しが良くなる。
Haskellも足りてないけどさ、型理論的に。そういう点でもラテン語あたりなのは妥当。
ラテン語は良い喩えだね。印欧語ヒエラルキーの上の方にいるし。
俗ラテン語を見て、どこが欠落してるかの見通しが良くなる。
Haskellも足りてないけどさ、型理論的に。そういう点でもラテン語あたりなのは妥当。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★3 [蚤の市★]
- 一律現金給付も消費減税もなし 高市内閣の経済対策に割れる世論 [蚤の市★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 津波警報の発表中にグーグル検索、AIが「すべて解除」と誤情報 [蚤の市★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 【実況】博衣こよりのえちえち朝活🧪 2
- 【実況】博衣こよりのえちえち朝活🧪
- 【高市悲報】日本人のTikTokアカウントが続々収益化剥奪中!!乞食どもざまああああああああwwwwwww [394917828]
- ネトウヨ「中国は政府が人民に金使って世論操作のヤラセ書き込みをさせている国。」 [153490809]
- 残クレマイホーム爆誕 [715715613]
- 寒すぎるんだが
