情報更新

last update 03/29 01:43

ツイート検索

 

@gakuzzzz
サイトメニュー
Twilogユーザー検索

Twilog

 

@gakuzzzz

がくぞ@gakuzzzz

Stats Twitter歴
5,149日(2010/02/23より)
ツイート数
33,988(6.6件/日)

ツイートの並び順 :

表示するツイート :

2019年08月31日(土)34 tweetssource

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis 知りたくなければ無理に知らなくても実用プログラミングはできるよ、というだけです。知りたい人の意欲を削ぐつもりはありません。知れば知ったで楽ができる場合もあります

posted at 03:10:55

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis @kmizu @RayStark77 「許される範囲を理解する」というと? あのセンテンスに含まれる具体例を他のクラスに置き換えて文が成り立つか、という意味で許される範囲を探るなら確かにモナドの理解が要る気がしますが、センテンスそのものの意味がモナド理解してないと理解できないという意味ですかね?

posted at 03:06:27

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis @kmizu @RayStark77 計算量しらないと非機能要件を満たすプログラムを書けない場合がありますが、モナドしらなくても愚直に書けば目的を達成するコードがかけるので困る頻度が違う気がしますね。メンテナンス性とかで差がでる感じでしょうか。forしらなくてもwhileが使えればプログラム書けるよ、が近いかもしれません

posted at 02:58:19

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis @kmizu @RayStark77 JavaやScalaの世界でモナドを表現する場合は型で表現するのが素直という感じですね。Haskellのモナドは型クラスであって型ではないですし。で、異なる型を統一的に扱うための抽象のひとつなので、動的型の場合わざわざそんな定義しなくても統一的に扱えるので定義する必要性が薄い気がします

posted at 02:45:18

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis @kmizu @RayStark77 「モナドのように扱える」が「がんばればモナドインスタンスが定義可能である」と同じ意味であればそうですね。StringやJFrameは型引数を持ってないので、Monad interface の実装を定義するのはできなそうに思えます。

posted at 02:34:00

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis @kmizu @RayStark77 センテンスとして成り立ちはしますが例示として適切かというと不適切な気がしますね。どちらもモナドインスタンスが定義できるデータ構造を例としたので (JavaのOptionalはそういう意味では不適切かもですが)

posted at 02:23:13

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis @kmizu @RayStark77 Streamは別のデータ構造ですね。Streamに対してもモナドインスタンスを定義できそうな気もしますが、Streamは副作用持つので定義してもNGかもしれません。(equalsをoverrideしたけどObject#equalsで規定されてる規約を守れてないみたいな状態になる感じです)

posted at 02:18:12

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis @kmizu @RayStark77 Javaのプログラム上でモナドを表現しようとすると、Comparator<A>のようにMonad<A>というようなinterfaceを定義する形になります。で、型引数にListを適用したMonad<List>という型のオブジェクトを定義することでListのモナドインスタンスを定義することが可能です(実際にはもう少し工夫がいりますが

posted at 02:16:03

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis @kmizu @RayStark77 はい「JavaでListつかえてるならモナド使えてるよ」というのは無理だし成り立たないと思います。僕もそんな主張をしたつもりもありません。「モナドとか全くしらなくてもListのメソッド呼べるし使えてるよね」というだけです。

posted at 02:10:44

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@wreulicke_close Scala標準にもモナドは存在しないので
> モナドであるScalaのList
というのが偽な気がしますね。
JavaのListもScalaのListも単なるデータ構造で別にモナドを定義してそれぞれモナドインスタンスを定義したければどちらもできるけど、しなくても十分使えるよねという話

posted at 01:55:01

8月31日

@gakuzzzz

がくぞ@gakuzzzz

highjやFunctionalJavaはjava.util.Listじゃなくて独自定義のListデータ構造にモナドインスタンスを定義してる感じか

posted at 01:51:25

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis @kmizu JavaのListがモナドだという主張をするつもりは無かったです。もちろんJavaのListもモナドインスタンスを定義しようと思えば可能だと思います。別段そんなこと大抵はしないで実用アプリ書いてますよねという感じですが

posted at 01:49:37

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis @kmizu ごめんなさい、きしださんの質問がまだ理解できていません。JavaのListについて僕は「普通にListやOptionalを使ってる」ぐらいしか言ってませんが、この表現が何かの誤解を誘発しそうという事でしょうか?

posted at 01:46:25

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis @kmizu 「そのような言葉を使う」というのは?どのような言葉でしょう?
僕が主張したいのは「モナドを理解しないとScalaは使えない」という命題は偽ですよ、ということです

posted at 01:36:42

8月31日

@gakuzzzz

がくぞ@gakuzzzz

@kis > Listがモナドになってる前提だと思うんです
あ、いや、そんな前提なく、ただのデータ構造としてList使ってますよねという話でした。addしたり拡張for文で回したり。同じようにScalaでもモナドとか気にせず要素の追加したりfor式でまわしたりすれば実用的なプログラム書けるでと言いたかった感じです

posted at 01:24:46

2019年08月30日(金)16 tweetssource

8月30日

@gakuzzzz

がくぞ@gakuzzzz

@kis 質問の意図がつかめてませんが、ListはListかと。それとは別にListのモナドインスタンスを定義することは可能だったり、モナドで抽象化されたAPIを使う際にListを具象として使うことが可能だったりするだけですねー

posted at 22:57:43

8月30日

@syobochim

しょぼちむ@syobochim

"ちゃんとキャッシュが使われているかどうかキャッシュのヒット率を監視する必要がある。ヒット率がとても低ければ、キャッシュはパフォーマンスを向上させるものではなく、使わないときよりも遅くなることだってある。"
だよな〜〜〜
#アーキ部

Retweeted by がくぞ

retweeted at 22:47:27

8月30日

@gakuzzzz

がくぞ@gakuzzzz

@ponkotuy そうやって毎回愚直に書いてて、もっと楽にできないだろうか?って問題意識が生まれれば、モナドそのものの理解がしやすくなるって面もありますしねー

posted at 22:36:54

8月30日

@gakuzzzz

がくぞ@gakuzzzz

@ponkotuy 別に勉強してなくても愚直にアプローチすれば良いので……。モナドの知識があれば楽をする方法が思いつきやすいだけで

posted at 22:34:07

8月30日

@gakuzzzz

がくぞ@gakuzzzz

@ma2saka 結局共通の文化圏というか基礎教養が共有されてこそ通じるものが多いので、文化圏が異なる人の集まりは何らか難しいというのは変わらないですよね……

posted at 22:31:57

8月30日

@gakuzzzz

がくぞ@gakuzzzz

Javaでモナドとか理解してなくても普通にListやOptionalを使ってるように、Scalaでもモナドとか理解してなくても普通にListとかOption使えばいいんですよ

posted at 22:17:19

8月30日

@gakuzzzz

がくぞ@gakuzzzz

@nagise そうなんですよねー。Builderを手で定義するのは面倒すぎるし、Lombokつかって楽すると後の改修時に直すべき所見逃す可能性増えて微妙だし、痛し痒しです……

posted at 15:43:21

8月30日

@gakuzzzz

がくぞ@gakuzzzz

@nagise ただそれはデフォルトコンストラクタが存在すればの話で、個人的にはデフォルトコンストラクタ自体も使わないように啓蒙していきたい感もあり、悩ましいですねw

posted at 15:38:28

8月30日

@gakuzzzz

がくぞ@gakuzzzz

@nagise そうそう、Class渡すの同じように使う事もできるっていうのあまり認知されてない可能性ありますねー。メソッド参照がnewにも使えるということが名前の印象から繋がらないのかもしれません。

posted at 15:31:43

8月30日

@gakuzzzz

がくぞ@gakuzzzz

Java8以降で何らかのユーザー定義クラスのインスタンス生成をするフレームワーク作りたくなったら、Class<T>を受け取ってランタイムリフレクションで生成するのではなく、Supplier<T>を受けとる形にすると救える命がありますのでよろしくお願いします

posted at 15:19:53

このページの先頭へ

×