[plt-scheme] Re: Re: Typed Scheme: Is there any easy way around this?
We have chosen the traditional notation intentionally. Your proposal
doesn't reduce the number of parentheses nor the number of chars I
have to type, right?
And before we get more email on this: keep in mind that I have worked
with two people who did Hindley-Milner inference for types in Scheme,
with two people who did SBA inference for Scheme, and now it's
explicitly, statically typed. Period. Until further notice.
-- Matthias
On Jun 1, 2007, at 10:38 AM, Anton van Straaten wrote:
> Matthias Felleisen wrote:
>> On Jun 1, 2007, at 1:37 AM, Matthew Swank wrote:
> ...
>>> Well, I don't use contracts. My basis for a claim of verbosity
>>> is my
>>> (somewhat limited) experience of Haskell and straight lisp.
>>>
>>> Compared to those, Typed Scheme is verbose.
>> That's something we can't fix so don't report it "-)
>
> There might be room for improvement, though. Maybe Typed Scheme
> can already do the following, I've only read some docs so far.
>
> The approach in which types can be annotated inline, like [n :
> number], is used in the MLs too. My experience is that such
> annotations make ML code more difficult to read and follow.
> Ironically, that's partly because it starts requiring a lot of
> parentheses, which break the flow of argument lists. If I find
> myself needing lots of annotations for some reason, I prefer to use
> a module signature to separate the annotations from the code.
> Alternatively, the Haskell approach of prepending the type
> signature to the function is a good one.
>
> Having the option to do something like this could help mitigate the
> verbosity. (Of course, I'm speculating having only read Typed
> Scheme code so far, not written it.)
>
> So e.g. instead of:
>
> (define: (find [v : number] [l : (Listof number)]) : (Maybe number)
>
> ...you might use something more like:
>
> (define/type ((number * (Listof number)) -> (Maybe number)) ;[*]
> (find v l)
> ...)
>
> If it's already possible to do something like this, I await the
> cluestick eagerly.
>
> Anton
>
> [*] using fantasy dot-free infix type notation
>