plai-typed:在plai-typed的DrRacket中使用define-type的嵌套结构
我尝试在DrRacket中使用#lang plai编写简单的模式匹配器,键入如下:plai-typed:在plai-typed的DrRacket中使用define-type的嵌套结构,racket,Racket,我尝试在DrRacket中使用#lang plai编写简单的模式匹配器,键入如下: #lang plai-typed (define-type Activity [kind (type : string) (description : string)] ) (define-type Hacktivity [activity1 (activity : Activity)] [activity2 (activity : Activity)] [activity3 (acti
#lang plai-typed
(define-type Activity
[kind (type : string) (description : string)]
)
(define-type Hacktivity
[activity1 (activity : Activity)]
[activity2 (activity : Activity)]
[activity3 (activity : Activity)]
)
(define (good? [h : Hacktivity]) : boolean
(type-case Hacktivity h
[activity1 (activity) (string=? activity-kind-type "Analyze")]
[activity2 (activity) (string=? "Analyze" "Analyze")]
[activity3 (activity) (string=? "Analyze" "Analyze")]
)
)
但是,无法正确获取“活动类型”部分。感谢您的帮助。
提前谢谢。我可以用以下方法解决这个问题:
#lang plai-typed
(define-type Activity
[kind (type : string) (description : string)]
)
(define-type Hacktivity
[activity1 (activity : Activity)]
[activity2 (activity : Activity)]
[activity3 (activity : Activity)]
)
(define analyze : Activity (kind "Analyze" "Test description"))
(define hack : Hacktivity (activity1 analyze))
(define (good? [h : Hacktivity]) : boolean
(type-case Hacktivity h
[activity1 (activity)
(type-case Activity activity
[kind (type description) (string=? type "Analyze")])]
[activity2 (activity)
(type-case Activity activity
[kind (type description) (string=? type "Analyze")])]
[activity3 (activity)
(type-case Activity activity
[kind (type description) (string=? type "Analyze")])])
)
如果您有嵌套的类型定义,则需要以嵌套的方式应用类型case