Hi,
My 2 cents:
I do not have a problem with Maybe/Just/Nothing. I am also used to
Option/Some/None in Scala. I would recommend to stick with one of
those two options instead of introducing a third one, like
Maybe/Some/None. Actually Optional is also nice (maybe even better
then Option), so I am also fine with Optional/Some/None.
I am against adding new syntax for things that can be expressed with
the standard library. So, I am against adding the question mark as a
special syntax.
However, if you really like the question mark, then I would suggest
adding it to the standard library as an identifier instead of as
syntax. That would require allowing the question mark characters in
identifiers and just renaming Maybe to ?
You would then be able to write
color : ? Color
instead of
color : Maybe Color
without introducing a special syntax for optional values. You could
also write
color : ?Color
(without the space) if you disallow mixing operator characters with
regular characters in identifiers. By the way, Scala allows using
operators in identifiers, including the quotation mark, so for example
? is a valid identifier in Scala. Color is also a valid idenfier in
Scala. However ?Color is not. Another example: there is a method
called ??? which has the type of Nothing, which is the bottom type in
Scala, and which just throws an exception. It may be used as a
placeholder for methods which are not implemented yet (for example in
exercises) without causing compilation errors.
I like using : for type annotations and :: for list consing. This is
also the Scala way.
I would suggest not make design decisions based on the fear that
something might be confusing for newbies. Of course newbies might be
confused. They are newbies after all. However, a tutorial is a place
to address it, not syntax. Syntax is for regular users.
Grzegorz