plait
plait copied to clipboard
For reasons having to do with the handin server, I use plait modules inside a main "#lang racket" module In the attached example the function is exported but not the...
```racket #lang plait (f : (('a * 'b) -> (Listof 'a))) (define (f ab) (type-case ('a * 'b) ab [(pair a b) '()])) ``` Which results in a contract violation...
I had a typo in a recursive call and stumbled across this a gnarly type error. The a minimal example to reproduce the error is as follows: ```racket #lang plait...
This is a large program fragment because I wanted to show much this impacts. In the following program, renaming any instance of `eval` with (say) `calc` causes a catastrophic renaming...
The following definition is somehow accepted, even though the type given for the signature is not valid for the definition (it's more general): ``` (wrong-foldr : (('a 'b -> 'b)...
Running `raco pkg install plait` on an Ubuntu 18.04 system with Racket 7.9 installed results in the following error: ``` Resolving "plait" via https://download.racket-lang.org/releases/7.9/catalog/ raco pkg install: cannot find package...
This doesn't work: ``` #lang plait ;; define a uni-variant type (define-syntax define-record (syntax-rules (:) [(define-tuple type-name constructor-name [field-name : field-type] ...) (define-type type-name (constructor-name [field-name : field-type] ...))])) (define-record...
For some assignments it's useful to have sets. E.g., for type-inference, you ideally want a *set* of constraints, not a *list* (since the order is meaningless). Below is support code...
This output seems a bit confusing to people learning Plait: ``` > (+ `1 `2) . typecheck failed: Number vs. S-Exp in: + (quasiquote 1) ``` Specifically, the `quasiquote`, which...
It would be nice to have ``` `BOOLEAN``` match Boolean values in the s-exp-match? patterns. That would complete the collection of built-in-types that can easily be matched. ``` > (s-exp-match?...