@gakuzzzz 正確には、英語だと別途2.13用のページがあるから、そっちを翻訳するタスクやってない、みたいな感じですねたぶん
https://docs.scala-lang.org/overviews/collections-2.13/overview.html…
Retweeted by がくぞ
retweeted at 23:41:17
Stats | Twitter歴 5,149日(2010/02/23より) |
ツイート数 33,988(6.6件/日) |
表示するツイート :
@gakuzzzz 正確には、英語だと別途2.13用のページがあるから、そっちを翻訳するタスクやってない、みたいな感じですねたぶん
https://docs.scala-lang.org/overviews/collections-2.13/overview.html…
Retweeted by がくぞ
retweeted at 23:41:17
@xuwei_k なるるるる
posted at 23:41:13
そういえば https://docs.scala-lang.org/ja/overviews/collections/overview.html… は 2.13 にまだ追従してなさそうですね
posted at 23:10:59
@Mizunashi_Mana なるほど。まー何のために覚えるか次第だとは思います。
実装の都合でのmixinとかもあるので、コレクションフレームワークの利用者として意識しないといけない階層構造はここにある図ぐらいかと https://docs.scala-lang.org/ja/overviews/collections/overview.html…
posted at 23:08:10
@Mizunashi_Mana コレクション周り2.13で刷新されたので今から覚えるなら2.13の方がいいかと思われます
posted at 23:01:18
@kis ウッス
posted at 03:28:07
Solt[F[_]] https://twitter.com/Kory__3/status/1167503357973430272…
posted at 03:25:47
はやくJavaにもHKT(博多)が実装されないかな
posted at 03:24:12
@kis 😊
posted at 03:21:00
@kis @kmizu @RayStark77 あーなるほどw
posted at 03:16:39
@kis いえいえー 質問の趣旨を僕がうまく汲み取れなかっただけなのでつっこみはいつでもwelcomeですー
posted at 03:14:38
@kis @kmizu @RayStark77 最初のツイートは思いっきりScalaが主題のセンテンスですね
posted at 03:12:55
@kis 知りたくなければ無理に知らなくても実用プログラミングはできるよ、というだけです。知りたい人の意欲を削ぐつもりはありません。知れば知ったで楽ができる場合もあります
posted at 03:10:55
@kis @kmizu @RayStark77 「許される範囲を理解する」というと? あのセンテンスに含まれる具体例を他のクラスに置き換えて文が成り立つか、という意味で許される範囲を探るなら確かにモナドの理解が要る気がしますが、センテンスそのものの意味がモナド理解してないと理解できないという意味ですかね?
posted at 03:06:27
@ababupdownba この文脈でした https://twitter.com/Kory__3/status/1167493216070881280…
posted at 03:01:22
@kis @kmizu @RayStark77 計算量しらないと非機能要件を満たすプログラムを書けない場合がありますが、モナドしらなくても愚直に書けば目的を達成するコードがかけるので困る頻度が違う気がしますね。メンテナンス性とかで差がでる感じでしょうか。forしらなくてもwhileが使えればプログラム書けるよ、が近いかもしれません
posted at 02:58:19
@kis @kmizu @RayStark77 基本的に型引数を一つとる型の抽象として定義されるので、型引数を取らないStringやJComponentは実装が書けない気がします
posted at 02:54:37
@kis @kmizu @RayStark77 配列はJVMの仕組み的に問題があるため難しい気がしますね。@kmizu さんが書いた例のような unit を定義するのが難しいので。
posted at 02:52:48
andThenとモナドの関係よくわからないけどElm力が足りないせいかな……
posted at 02:47:38
@kis @kmizu @RayStark77 JavaやScalaの世界でモナドを表現する場合は型で表現するのが素直という感じですね。Haskellのモナドは型クラスであって型ではないですし。で、異なる型を統一的に扱うための抽象のひとつなので、動的型の場合わざわざそんな定義しなくても統一的に扱えるので定義する必要性が薄い気がします
posted at 02:45:18
@kis @kmizu @RayStark77 「モナドのように扱える」が「がんばればモナドインスタンスが定義可能である」と同じ意味であればそうですね。StringやJFrameは型引数を持ってないので、Monad interface の実装を定義するのはできなそうに思えます。
posted at 02:34:00
@kis @kmizu @RayStark77 「モナドのように扱う」とは……。一連のスレッドの中で初めて出てきた表現なのでその文脈がよくわからないです。
posted at 02:27:25
@kis @kmizu @RayStark77 ???ごめんなさい質問の意図がまったくわかりませんでした。
Monad<List>とOptional<List>は違う型ですよね。
posted at 02:24:57
@kis @kmizu @RayStark77 センテンスとして成り立ちはしますが例示として適切かというと不適切な気がしますね。どちらもモナドインスタンスが定義できるデータ構造を例としたので (JavaのOptionalはそういう意味では不適切かもですが)
posted at 02:23:13
@kis @kmizu @RayStark77 Streamは別のデータ構造ですね。Streamに対してもモナドインスタンスを定義できそうな気もしますが、Streamは副作用持つので定義してもNGかもしれません。(equalsをoverrideしたけどObject#equalsで規定されてる規約を守れてないみたいな状態になる感じです)
posted at 02:18:12
@kis @kmizu @RayStark77 Javaのプログラム上でモナドを表現しようとすると、Comparator<A>のようにMonad<A>というようなinterfaceを定義する形になります。で、型引数にListを適用したMonad<List>という型のオブジェクトを定義することでListのモナドインスタンスを定義することが可能です(実際にはもう少し工夫がいりますが
posted at 02:16:03
@kis @kmizu @RayStark77 はい「JavaでListつかえてるならモナド使えてるよ」というのは無理だし成り立たないと思います。僕もそんな主張をしたつもりもありません。「モナドとか全くしらなくてもListのメソッド呼べるし使えてるよね」というだけです。
posted at 02:10:44
@kmizu @kis @RayStark77 ですねー。 JavaのListに対してモナドインスタンスを定義することは可能だと思います
posted at 02:05:42
@wreulicke_close Scala標準にもモナドは存在しないので
> モナドであるScalaのList
というのが偽な気がしますね。
JavaのListもScalaのListも単なるデータ構造で別にモナドを定義してそれぞれモナドインスタンスを定義したければどちらもできるけど、しなくても十分使えるよねという話
posted at 01:55:01
highjやFunctionalJavaはjava.util.Listじゃなくて独自定義のListデータ構造にモナドインスタンスを定義してる感じか
posted at 01:51:25
@kis @kmizu JavaのListがモナドだという主張をするつもりは無かったです。もちろんJavaのListもモナドインスタンスを定義しようと思えば可能だと思います。別段そんなこと大抵はしないで実用アプリ書いてますよねという感じですが
posted at 01:49:37
@kis @kmizu ごめんなさい、きしださんの質問がまだ理解できていません。JavaのListについて僕は「普通にListやOptionalを使ってる」ぐらいしか言ってませんが、この表現が何かの誤解を誘発しそうという事でしょうか?
posted at 01:46:25
@kis @kmizu 「そのような言葉を使う」というのは?どのような言葉でしょう?
僕が主張したいのは「モナドを理解しないとScalaは使えない」という命題は偽ですよ、ということです
posted at 01:36:42
@kis > Listがモナドになってる前提だと思うんです
あ、いや、そんな前提なく、ただのデータ構造としてList使ってますよねという話でした。addしたり拡張for文で回したり。同じようにScalaでもモナドとか気にせず要素の追加したりfor式でまわしたりすれば実用的なプログラム書けるでと言いたかった感じです
posted at 01:24:46
これ https://twitter.com/omochimetaru/status/1167435977880563712…
posted at 22:58:51
@kis 質問の意図がつかめてませんが、ListはListかと。それとは別にListのモナドインスタンスを定義することは可能だったり、モナドで抽象化されたAPIを使う際にListを具象として使うことが可能だったりするだけですねー
posted at 22:57:43
ナーロッパに苦言を呈する人、ぜひD&Dとかにも突っ込みいれて欲しい
posted at 22:50:57
"ちゃんとキャッシュが使われているかどうかキャッシュのヒット率を監視する必要がある。ヒット率がとても低ければ、キャッシュはパフォーマンスを向上させるものではなく、使わないときよりも遅くなることだってある。"
だよな〜〜〜
#アーキ部
Retweeted by がくぞ
retweeted at 22:47:27
@ponkotuy そうやって毎回愚直に書いてて、もっと楽にできないだろうか?って問題意識が生まれれば、モナドそのものの理解がしやすくなるって面もありますしねー
posted at 22:36:54
@ponkotuy 別に勉強してなくても愚直にアプローチすれば良いので……。モナドの知識があれば楽をする方法が思いつきやすいだけで
posted at 22:34:07
@ma2saka 結局共通の文化圏というか基礎教養が共有されてこそ通じるものが多いので、文化圏が異なる人の集まりは何らか難しいというのは変わらないですよね……
posted at 22:31:57
@ma2saka :sorena: :desuyone:
posted at 22:27:39
@ma2saka ご査収ください http://bodyhack.jp/mentaltraining/2467/…
posted at 22:24:51
Javaでモナドとか理解してなくても普通にListやOptionalを使ってるように、Scalaでもモナドとか理解してなくても普通にListとかOption使えばいいんですよ
posted at 22:17:19
別にモナドを理解しなくてもScalaを実用で使えるし業務でも普通に使えますよ
posted at 21:32:56
@nagise そうなんですよねー。Builderを手で定義するのは面倒すぎるし、Lombokつかって楽すると後の改修時に直すべき所見逃す可能性増えて微妙だし、痛し痒しです……
posted at 15:43:21
@nagise ただそれはデフォルトコンストラクタが存在すればの話で、個人的にはデフォルトコンストラクタ自体も使わないように啓蒙していきたい感もあり、悩ましいですねw
posted at 15:38:28
@nagise そうそう、Class渡すの同じように使う事もできるっていうのあまり認知されてない可能性ありますねー。メソッド参照がnewにも使えるということが名前の印象から繋がらないのかもしれません。
posted at 15:31:43
@gakuzzzz public static <T> void foo(Supplier<T> s) {}
に対して
foo (Bar::new);
とか渡せるのも知られてないかもしれませんね
Retweeted by がくぞ
retweeted at 15:29:20
Java8以降で何らかのユーザー定義クラスのインスタンス生成をするフレームワーク作りたくなったら、Class<T>を受け取ってランタイムリフレクションで生成するのではなく、Supplier<T>を受けとる形にすると救える命がありますのでよろしくお願いします
posted at 15:19:53