Hi Ben, Thank you for your answer!
I'll give (sub)modules a try. The examples from the plot library are very helpful, I'll peruse them attentively. I didn't realise that (provide (contract-out)) gave better error messages than define/contract. I'm glad to have chosen to use (provide (contract-out)) in my code. - Sergiu On Monday, March 23, 2020 at 5:16:52 PM UTC+1, Ben Greenman wrote: > > On 3/21/20, unlimitedscolobb <[email protected] <javascript:>> wrote: > > Hello, > > > > I come to Racket from Haskell and so far I am quite happy, as I feel > freer > > to do some weird stuff from time to time, and I am absolutely in love > with > > the Lisp-parens syntax. > > > > As a former Haskeller, one of the first things I tried was Typed Racket. > > It worked like a charm for small examples, but started getting in my way > > too much as soon as I got to some more advanced stuff (e.g. polymorphic > > functions, generics, eval, even apply). My immediate reaction was > ditching > > types for contracts, which are rather fine and allow me to use a > familiar > > language, but I am somewhat worried about the performance penalties > > defining everything via define/contract may incur. Also, it seems weird > to > > set up runtime contract checks where a simple type annotation would do. > > I have no problem with Typed Racket not being able to type every single > one > > of my functions (after all, I came to Racket to be able to do weird > stuff), > > but so far I couldn't figure out what would be the best way to mix typed > > into two separate files. > > > > What is the standard practice for mixing typed and untyped code within a > > single module? Submodules? Typed regions within untyped code? Maybe > > there is an example somewhere I can have a look at? > > Yep, submodules and typed regions are the two ways to do this. > > The plot library uses typed submodules in untyped code in a few small > places: > > > https://github.com/racket/plot/blob/master/plot-lib/plot/private/common/contract.rkt > > > https://github.com/racket/plot/blob/master/plot-lib/plot/private/common/parameter-groups.rkt > > > I've done a similar thing to make typed parameters in untyped code. > > Not sure about best practices, but I definitely prefer keeping typed > and untyped code in separate modules. > > For contracts, though, (provide (contract-out ...)) gives better error > messages than define/contract. > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/1aa90aad-c951-43a1-be7e-24df02ec5c67%40googlegroups.com.

