Scala: Option[T] as ?[T] (or even T?) -


i tried

type ?[_] = option[_]  def f(x: ?[int]) = (y <- x) yield y 

(but don't know doing.)

insofar types objects, should able define postix operator (i.e. 0 arity method) use in type signatures (i think). might need space like

def f(x: int ?) = (y <- x) yield y 

scala makes easy use option type matching , polymorphism, avoid null. but, classes (nullable) vars , java returns vars. using classes , calling java 2 of scala's selling points. easy-to-write , easy-to-read syntax support options more strongly.

  1. what things scala "?" make parsing special.

  2. ideally, 1 write

    def f(x: int?) = (y <- x) yield y

like other languages. can in scala (without macro)?

first, types not objects. in fact, scala has 2 namespaces: values , types. different things, , play different rules.

the postfix idea kind of nice, actually, not possible. there's infix notation types, though.

now, wrote:

type ?[_] = option[_] 

each underscore has different meaning. underscore in ?[_] means ? higher-kinded, don't care it's type parameter is. underscore in option[_] means option existential type. when write x: ?[int], scala convert x: option[t] { forsome type t }. means not don't int, type parameter of option unknowable (you know exists).

however, does compile:

scala> def f(x: ?[int]) = (y <- x) yield y f: (x: ?[int])option[any] 

which version of scala did use? 2.11? co-worker of mine has found type inference regressions on 2.11, it.

the proper way write type alias this:

type ?[+a] = option[a] 

not pass type parameter along (it is parameter, after all!), need specify co-variance act option (which co-variant itself).

now, 2 questions, scala has absolutely no special treatment of ?. and, no, can't this. ? not widespread among languages either, , in of them support it, built in language, , not externally defined.

besides, it's kind of joke that, when interface java, typing out option problem -- not average identifier size in java!


Comments

Popular posts from this blog

c++ - How to add Crypto++ library to Qt project -

jQuery Mobile app not scrolling in Firefox -

How to use vim as editor in Matlab GUI -