Sorry for the private email instead of public, I always seem to miss the reply-all button. I did get it to work, but it felt off. If it were to actually be added to typed racket, it might be better to have some sort of standalone form like (define-type-arg-convention number Number) which lets all your functions assume any arguments named "number" have type Number. Less messy, and you can implement the camel-case default on top of that, while also letting you implement different conveniences. I could also name x y z to be of type Number, or n and m to be of type Natural, without specifically needing the types X Y Z N or M. This might be trickier, but it's definitely doable. Also, I was confused about why my first attempt wasn't working - turns out I messed up my macro and that's what the issue I was having initially was. Typed Racket does indeed expand first and then type-check.
On Tue, Oct 7, 2014 at 6:29 PM, Matthias Felleisen <matth...@ccs.neu.edu> wrote: > > We exchange email off-line and Jack figured out what he wanted. It might > be neat to add it to TR. > > > > > > > On Oct 7, 2014, at 9:24 PM, Alexander D. Knauth wrote: > > > > > On Oct 7, 2014, at 2:38 PM, Jack Firth <jackhfi...@gmail.com> wrote: > > > >> I read a tweet about someone wistfully wishing there was some sort of > "the" operator in a typed non-parensy language such that one could write > something like this: > >> > >> Customer someFunc(the customer) { ... } > >> > >> and have it mean: > >> > >> Customer someFunc(Customer customer) { ... } > >> > >> Basically, an operator to take care of the common case where the > variable name is just the lower-camel-case form of the type. As a Racket > fan, I wanted to see if I could do this with a macro in Typed Racket. After > some mucking around I had a form that handled the syntax correctly, but I > couldn't use it in typed racket because the type checker and type > annotations run as macros *before* my macro expands. > > > > I thought typed racket expanded first and then type-checks? > > > >> As I read further, it seems to be the case that macros in typed racket > are a very thorny problem and an area of open research. So is it currently > possible to implement a "the" operator like the one shown above in typed > racket? And if so, how would it be done? > >> ____________________ > >> Racket Users list: > >> http://lists.racket-lang.org/users > > > > > > ____________________ > > Racket Users list: > > http://lists.racket-lang.org/users > >
____________________ Racket Users list: http://lists.racket-lang.org/users