typed-racket icon indicating copy to clipboard operation
typed-racket copied to clipboard

Typed Racket cannot handle compose that use multiple values

Open OnorioCatenacci opened this issue 9 months ago • 3 comments

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.

OnorioCatenacci avatar Jan 21 '25 16:01 OnorioCatenacci