racket/typed-racket

internal error type-checking a dot type program

Ouverte

#509 ouverte le 13 mars 2017

 (0 commentaire) (0 réaction) (0 personne assignée)Racket (106 forks)github user discovery
good first issue

Métriques du dépôt

Stars
 (576 étoiles)
Métriques de merge PR
 (Merge moyen 11j 14h) (1 PR mergée en 30 j)

Description

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))

Guide contributeur