scala - How to fix this typeclass example? -


this follow-up previous question:

suppose create following test converter.scala:

trait converterto[t] {   def convert(s: string): option[t] }  object converters {   implicit val toint: converterto[int] =     new converterto[int] {        def convert(s: string) = scala.util.try(s.toint).tooption     } }  class {   import converters._   def foo[t](s: string)(implicit ct: converterto[t]) = ct.convert(s) } 

now when tried call foo in repl fails compile:

scala> :load converter.scala loading converter.scala... defined trait converterto defined module converters defined class  scala> val = new a()  scala> a.foo[int]("0") <console>:12: error: not find implicit value parameter ct: converterto[int]           a.foo[int]("0")                     ^ 

import converters._ in class a not cut it. can remove , code still compile. moment compiler needs find in actual implicit not in class a, foo declared.

the compiler needs find converterto[int] in implicit scope @ moment call a.foo[int](..) in repl. import needs be.

had object converters , trait converterto been named same (so there companion object) import not needed.


Comments

Popular posts from this blog

Payment information shows nothing in one page checkout page magento -

tcpdump - How to check if server received packet (acknowledged) -