Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Kazunari Mori
    @kazzna
    ドワンゴで口の悪い人を雇うしか(?)
    kenji yoshida
    @xuwei-k
    scalaz 7.2 をリリースしたらあまりやることなくて、若干やる気が消失している・・・。scala-js対応でも真面目にやるか否か・・・
    Mathias Sulser
    @suls
    失礼しますがScalazのFree Applicativeの例がありますか?
    Sanshiro Yoshida
    @halcat0x15a
    @suls Scalazではないですが私の記事にFree ApplicativeによるOption Parserの例を書いています。
    http://halcat.org/scala/freeap/index.html
    Junichi Kato
    @j5ik2o
    FreeとReaderを組み合わせた実装について質問です
    https://gist.github.com/j5ik2o/e99968bcdbe5d3555ad7
    kenji yoshida
    @xuwei-k
    そもそもasInstanceOfで無理やり型合わせてるところが合ってない(キャストエラー起きる)気がする
    あとは type R[A] = Reader[A, Account] だと、原理的に普通Monadにならないですね。 type R[A] = Reader[Account, A] ならMonadになるだろうけど
    Junichi Kato
    @j5ik2o

    あざす。
    https://gist.github.com/j5ik2o/e99968bcdbe5d3555ad7

    書き換えてみた。だいたいやりたいことができた。もうちょっと勉強します

    pocketberserker
    @pocketberserker
    ここで尋ねるべき事案だった(?)
    https://twitter.com/pocketberserker/status/697616173353947136
    pocketberserker
    @pocketberserker
    ということで募集開始しました
    http://connpass.com/event/27049/
    Kuchitama
    @Kuchitama
    :+1:
    kenji yoshida
    @xuwei-k
    何話そう・・・
    pocketberserker
    @pocketberserker
    shapeless+Scala.js?
    lyrical logical
    @lyricallogical
    shapeless ってカバーしてる範囲広いので実際何話せばいいか難しいですねえ
    lyrical logical
    @lyricallogical
    List.empty[Kleisli[A \/ ?, B, C]].sequenceU はいいのい type T[B, C] = Kleisli[A \/ ?, B, C]; List.empty[T[B, C]].sequenceU は駄目なのなんなんですかね…
    lyrical logical
    @lyricallogical
    いうまでもない気がしたけど明記しておくと scalaz の話でした。>sequenceU 問題
    Manabu Nakamura
    @gakuzzzz
    type T[B, C, D] = Kleisli[A \/ D, B, C]
    List.empty[T[B, C, ?]].sequenceU
    にする必要があるとかですかね?
    kenji yoshida
    @xuwei-k
    scalazというか、scala自体がtype alias使うか否か?で、推論出来るかどうか変わるので、汎用的な解決方法あまりない、っていう認識…。
    頑張ってscalaz.Unapplyのインスタンス定義追加などで、どうにかなる場合はある程度あるけど
    Manabu Nakamura
    @gakuzzzz
        type A    = List[?]
        type B    = List
        type C[E] = List[E]
    
        Functor[A] // NG
        Functor[B] // NG
        Functor[C] // OK
    こんな感じですね
    kenji yoshida
    @xuwei-k
    scalaz 7.1 と 7.2 で違うし、(REPLで試したせいなのかわからないけど) りりろじさんが言ってる結果とも違う(?)場合あるっぽいしつらい
    lyrical logical
    @lyricallogical
    やっぱり一般的な解決法ないですよねえ…
    lyrical logical
    @lyricallogical
    repl の -k(ind)オプションで同じなのに解決できなくなったりするの闇過ぎる
    lyrical logical
    @lyricallogical
    14:46 の gakuzzzz さんの例は良く分からないというか Kleisli の kind ( -> ) -> -> -> * なので \/ の部分 kind あわないんじゃないですかね 携帯から入力大変すぎる
    Manabu Nakamura
    @gakuzzzz
    あ、そうか。 Kleisli の第一引数 が (*->*) の必要がありますね。勘違いしました。失礼しました
    lyrical logical
    @lyricallogical
    いえいえまあなんにせよよくわかないですねえ type alias は…
    そもそも sequenceU というか Unapqly の存在が闇なんですが
    kenji yoshida
    @xuwei-k
    Unapplyなどでの推論、うまくいったらラッキーだけど、うまくいかなかったら(少しだけ試行錯誤したのち)諦めて考えるのやめて型明示する、みたいな方針だな個人的には・・・。稀にScalaのversionによっても推論可能か否かが変わる場合あって、深く考えても疲れるというか
    https://meta.plasm.us/posts/2015/07/11/roll-your-own-scala/ そのあたりなどにも詳しいtravisbrownさん何なんだ・・・ってなる(このblog記事あまり理解できてないというか、たいしてちゃんと読んでない)
    lyrical logical
    @lyricallogical
    まじめに Unapply.scala を読むことにした
    lyrical logical
    @lyricallogical
    前述の type alias の話冷静に考えると当たり前だった…
    lyrical logical
    @lyricallogical
    type alias は type F = ... みたいな本当に単なる別名の場合は元の定義の kind に従う、単なる別名ではなく型パラメタを導入した場合は元の定義の kind ではなく別名の方の kind に従うという感じ…な気がする…
    処理系のコード読まないと仕様にも書いてないし知るかという気持ちになるけど単なる別名は大丈夫そうなのでこれであほみたいにながい MT の型毎回書かなくて済むゾ~
    kenji yoshida
    @xuwei-k
    経験的に、確かにそんな挙動だった気はする。type alias
    kenji yoshida
    @xuwei-k
    やっと milessabin/shapeless#556 shapelessへ初コミットを果たした
    Kuchitama
    @Kuchitama
    :+1: :clap:
    kkismd
    @kkismd
    shapeless HListの「型レベル自然数を使って型安全に要素を取り出す」って説明の意味ですが、
    apply(n: Int) だと返り値を Any にするしかないけど
    apply[N <: Nat] にすれば型引数ごとに返り値の型を静的に決めることができる
    という認識で合ってますか?
    kkismd
    @kkismd
    N番目の要素を取り出す操作がまだ見つけられないので上の apply というのは想像です
    Manabu Nakamura
    @gakuzzzz
    List.apply(Int) と違って size 以上の Nat はコンパイルエラーになるのが嬉しいですね
    kkismd
    @kkismd
    ありがとうございます
    syntaxのほうにあったんですねー
    core/src/main/scala/shapeless/hlists.scala
    こっちのほうを見て無い無い言ってました
    kenji yoshida
    @xuwei-k
    全部そういう感じでsyntaxに定義されてたり、ちょっと読み方わかってないとshapelessのコードはアレですね
    kkismd
    @kkismd
    僕はいまだに scalaz のほうの読み方も分かってなくてアレです(自分が)
    kenji yoshida
    @xuwei-k
    https://gist.github.com/tonymorris/0ebc6eff79b99469a58c9cab92a6637e ミーティングあったらしい(参加してない)
    Naoki Aoyama
    @aoiroaoino
    scalaprops 使うことに strong yes してたり、❤ でデコられたり愛(?)を感じる(ぇ
    kenji yoshida
    @xuwei-k
    scalaprops化、途中までやって放置している・・・
    Naoki Aoyama
    @aoiroaoino
    あと、適当に言うと monocle で lens とか合成するごとに新しいオブジェクト生成されますし、パフォーマンス良くないだろうなーってのはもちろんありますね...。やはり実行時にどうにかするしかない(ぇ
    https://speakerdeck.com/todesking/shi-xing-shi-niokerujvmbaitokodozui-shi-hua-shou-fa
    This message was deleted