These are chat archives for scalajp/functional

17th
Oct 2015
todesking
@todesking
Oct 17 2015 12:12
  trait Context[A] {
    def foo(c: Context[A]) = ???
  }
  def with_context(f: Context[_] => Unit) = ???

  with_context { c1 =>
    with_context { c2 =>
      // c1とc2が別の型になるようにしたい
      c1.foo(c1) // 通ってほしい
      c1.foo(c2) // エラーになってほしい
    }
  }
というのをやりたいんですが、なにか方法はあるでしょうか
Uniqueness types?
KAWACHI Takashi
@tkawachi
Oct 17 2015 12:16
def with_context[A](f: Context[A] => Unit) にはしたくない感じですか?
そういう話じゃないのかな
todesking
@todesking
Oct 17 2015 12:20
c1とc2が異なる型パラメータで生成されてほしいです(具体的な型は問わない)
todesking
@todesking
Oct 17 2015 12:27
実際にはもうちょっと複雑で、c1から生成された値x1c2から生成されたx2は互換性がないので、それらが一緒に使われていないかをコンパイル時にチェックしたい