I am trying to convert a project over from Racket to Typed Racket and I am encountering some issues with the typing mechanisms.
string->number returns (U Complex False), but I cannot find any procedures to convert that (or even just a Complex) to an Integer.
A very short example that illustrates my issue:
#language typed/racket
(define die : Integer 5)
(define dlist '("1" "2" "3" "4" "5"))
(set! die (string->number (car dlist)))
Thanks for your help!
The result of string->number
has the type (U Complex False)
, where a value of false
means string->number
failed to parse a number. In this case you know for sure that it won't fail, so you can just assert that it is an integer with (assert (string->number ...) exact-integer?)
:
#lang typed/racket
(define die : Integer 5)
(define dlist '("1" "2" "3" "4" "5"))
(set! die (assert (string->number (car dlist)) exact-integer?))
I understand that it's supposed to be a simple example but try to stick with numbers and avoid strings if you can.