DrRacket поможет в написании функции для извлечения RegE из типа RES - PullRequest
1 голос
/ 08 июня 2019

Я использую lang pl для этого.

У меня есть следующие типы данных:

(define-type RES
[RES_Bool Boolean]
[RegV Bit-List]
[FunV Symbol RegE])

и эти 2 функции:

(: RegV->bit-list : RES -> Bit-List)
;; extract a bit-list from RES type
(define (RegV->bit-list r)
  (cases r
    [(RegV bl) bl]
    [else (error 'RegV->bit-list "Given wrong type of RES" r)]
    )
  )

(: RegV->boolean : RES -> Boolean)
;; extract a boolean from RES type
(define(RegV->boolean res)
  (cases res
    [(RES_Bool b) b]
    [else (error 'RegV->boolean "Given wrong type of RES ~s" res)]))

Я хочу написать новую функцию для [FunV Symbol RegE] Я пыталсясделайте это так:

(: RegV->RegE : RES -> RegE)
;; extract a RegE from RES type
(define(RegV->RegE res)
  (cases res
    [(FunV Symbol RegE) RegE]
    [else (error 'RegV->RegE "Given wrong type of RES ~s" res)]))

но это не сработает, любая помощь будет оценена

...