Typed Racket: Subtype of a struct typed where one field has a fixed value

29 views
Skip to first unread message

je...@lisp.sh

unread,
Jan 16, 2021, 11:14:05 AM1/16/21
to Racket Users
Working in Typed Racket, consider a struct like this:

(struct point
  ([x : Real]
   [y : Real]))

Is there a way to express the type of those points whose y field is, say, 0? In other words, I'd like a talk about point structs where x varies freely, but y is always 0. Obviously, I can make a function that discriminates this subclass, but I'm not sure how to express it as a type. I've hunted around in the docs, but I can't quite find what I'm looking for.

Sorawee Porncharoenwase

unread,
Jan 16, 2021, 12:26:17 PM1/16/21
to je...@lisp.sh, Racket Users

--
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 racket-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/ee8bc006-590c-48f6-ac8b-4ef4f88019dfn%40googlegroups.com.

je...@lisp.sh

unread,
Jan 16, 2021, 1:46:18 PM1/16/21
to Racket Users
I have it on good authority that parametric types are the way to go. Look at this:

````
#lang typed/racket
(struct (α β) point ([x : α] [y : β]))
(define-type Point point)

(define-type FixedY (Point Real 0))
````

That's it!
Reply all
Reply to author
Forward
0 new messages