racket/typed-racket

internal error type-checking a dot type program

Aperta

#509 aperta il 13 mar 2017

 (0 commenti) (0 reazioni) (0 assegnatari)Racket (106 fork)github user discovery
good first issue

Metriche repository

Star
 (576 stelle)
Metriche merge PR
 (Merge medio 11g 14h) (1 PR mergiata in 30 g)

Descrizione

What version of Racket are you using?

6.8.0.2--2017-02-10

What program did you run?

#lang typed/racket

(define-type Filter
  (All (a b ...) (-> (-> a b ... b Any) (Listof a) (Listof b) ... (Listof a))))

(: filter* Filter)
(define (filter* p? l)
  (cond
    [(andmap empty? l) '[]]
    [else (define fst ({inst map a b ...} first l))
          (define rst (apply filter* p? ({inst map a b ...} rest l)))
          (if (apply p? fst) (cons fst rst) rst)]))

(filter* (lambda ({x : Integer}) (> x 1)) '(0 1 2))

What should have happened?

type error

If you got an error message, please include it here.

plt/racket/share/pkgs/typed-racket-lib/typed-racket/utils/tc-utils.rkt:271:0: Internal Typechecker Error: Got non-dcons: #(struct:dcon-dotted () #(struct:c Nothing b) b) #(struct:dcon-exact () #(struct:c Nothing Any)) while typechecking: (#%app apply filter* p? (#%app (#%expression map) rest l)) originally: (apply filter* p? ((inst map a b ...) rest l))

Guida contributor