These are chat archives for scalikejdbc/ja

10th
Jun 2015
KAWACHI Takashi
@tkawachi
Jun 10 2015 05:52
TypeUnbinder の言葉的なニュアンスがよくわからないなあと思ってます
TypeUnbinder は UnboundResult を返すけどその中身は ParameterBinder で... 何を何に bind/unbound というニュアンスなのか..
Manabu Nakamura
@gakuzzzz
Jun 10 2015 07:25
Unbound してないのに UnboundResult は確かに微妙な名前ですね
TypeUnbinder は TypeBinder の対比的な感じだけなのでもっといい名前があれば是非
kenji yoshida
@xuwei-k
Jun 10 2015 07:50
適当に Co つけて CoTypeBinder にしよう(ぇ
KAWACHI Takashi
@tkawachi
Jun 10 2015 08:32
TypeBinder は Scala の Type を SQL statement に bind する、ってニュアンスなのかなあ
ResultSet から Scala の Type を取り出す、ってことだと TypeExtractor とか(適当
逆だった
TypeBinder は ResultSet から Scala の Type (?)に bind か
Manabu Nakamura
@gakuzzzz
Jun 10 2015 08:35
ですね。そっちのイメージでした
そうか、こういう ResultSet と PreparedStatement で型が違うような場合に型引数4つの lens family が使えるのか
KAWACHI Takashi
@tkawachi
Jun 10 2015 08:38
Lens まだ良くわかってませんが、 Prism とか Iso 的なもので型間の mapping 書いとくと良きに計らってくれると嬉しいなーとは思います
kenji yoshida
@xuwei-k
Jun 10 2015 08:42
lens familyが本当に適した事例なのかよくわかってない。合ってたとしても、いずれにせよ scalikejdbc 的に合ったものとしてどういうもの入れるのか?という別問題もあるけど
Manabu Nakamura
@gakuzzzz
Jun 10 2015 08:46
(言っといて何ですがScalikeJDBCには入れない方がいい気がしております……)
利用者側が意識せずに使える所まで落とし込めれば別ですが
CoTypeBinder 良い様に思えて来た @@
KAWACHI Takashi
@tkawachi
Jun 10 2015 08:48
Co っていわれるとなんだか身構えちゃいます
kenji yoshida
@xuwei-k
Jun 10 2015 09:49
まぁ9割冗談でいったので、 Coなんとか、よりもっとscalikejdbcっぽいいい名前がある気がします(他人任せ
Coつけるってことは、そもそも双対なのか、双対とはなんなのか?とかいう答えが出なそうな深みにはまる
Kazuhiro Sera
@seratch
Jun 10 2015 11:37
ParameterBinderXXX みたいなのがいいのかな。コンパイルエラーになったときにやるべきことがわかりやすいことを優先したいです。
Manabu Nakamura
@gakuzzzz
Jun 10 2015 13:17

なるほど。
正直 現状の UnboundResult は実装詳細なのでできればユーザーには見えないようにしたい感はあります。

あれの導入経緯はテストケースとかで

.eq(SQLSyntax, SQLSyntax)

みたいなケースがあって、eq(SQLSyntax, Any) の時はそのままで良かったんだけど、 eq[A: TypeUnbinder](SQLSyntax, A) だと TypeUnbinder[SQLSyntax] が必要になる、という所からでてきてます。

最初、eq[A: TypeUnbinder](SQLSyntax, A)eq(SQLSyntax, SQLSyntax) で overload することも考えたんですが、けっこう膨大な overload が必要になったので今の様な感じに。

Kazuhiro Sera
@seratch
Jun 10 2015 14:07
そっちではなくて TypeUnbinder が未定義ですよみたいなのはユーザに見えますよねという話です。コンパイラに TypeUnbinder がないよって言われても一瞬何のことかわからないんじゃないかと。
Manabu Nakamura
@gakuzzzz
Jun 10 2015 14:35
TypeUnbinder が未定義ですよ案件、無くそうと思えばなくせるんですが(無かったら今までのAnyと同じ挙動) それはそれでどうだろうというのがあります。
Kazuhiro Sera
@seratch
Jun 10 2015 14:36
これだったら導入の意義があるのだろうかという気がしますが>無かったら今までのAnyと同じ挙動
知ってる人だけが楽できる的な感じになりますね。
個人的にはエラーの方がいいと思います。
で、エラーの内容を判りやすく、ですね。
Manabu Nakamura
@gakuzzzz
Jun 10 2015 14:43
エラーメッセージで $A 型を PreparedStatment にセットする方法がわからないので、HogeHoge[$A] の値をimplicit で定義してね、的な案内を出す感じですかね。
PreparedStatementSetter とかいうクラスが Spring にある……
Kazuhiro Sera
@seratch
Jun 10 2015 14:51
そうですね>エラーメッセージ
Manabu Nakamura
@gakuzzzz
Jun 10 2015 14:52
あ、でも実際に PreparedStatment にセットするのは ParameterBinder の方か……
ParameterBinderFactory ?
Kazuhiro Sera
@seratch
Jun 10 2015 14:56
それは悪くはなさそうですね。
Manabu Nakamura
@gakuzzzz
Jun 10 2015 14:58
ちょっとその方向で直してみますか