typed-racket
typed-racket copied to clipboard
Typed Racket cannot handle compose that use multiple values
What version of Racket are you using? 8.15
What program did you run?
#lang typed/racket
(require qi)
(: add-up (-> Number Number Number))
(define (add-up n m) (+ n m))
(: cube (-> Number Number))
(define (cube n) (* n n n))
(: flow-values (-> Number Number Number))
(define (flow-values n m) (~> (n m) (add-up _ _) cube))
What should have happened? The code should have compiled without a problem. This code compiles correctly:
#lang typed/racket
(require qi)
(: add-up (-> Number Number Number))
(define (add-up n m) (+ n m))
(: cube (-> Number Number))
(define (cube n) (* n n n))
(: flow-values (-> Number Number Number))
(define (flow-values n m) (~> (n m) (add-up _ _)))
If you got an error message, please include it here.
3-unsaved-editor:18:0: Type Checker: Polymorphic function `compose' could not be applied to arguments:
Argument 1:
Expected: (-> b c)
Given: (-> Number Number)
Argument 2:
Expected: (-> a b)
Given: (-> Number Number Number)
in: (define (flow-values n m) (~> (n m) (add-up _ _) cube))
Please include any other relevant details On Ubuntu 24.04 and using DrRacket for testing. Also tested with racket -I typed/racket (8.15 [cs]) and got the same error message.