#lang plait
(define-type BT
[mt]
[node (v : Number) (l : BT) (r : BT)])
(define (size-pm-ds (t : BT))
(cond
[(mt? t) 0]
[(node? t)
(let ([v (node-v t)]
[l (node-l t)]
[r (node-r t)])
(+ 1 (+ (size-pm-ds l) (size-pm-ds r))))]))
(size-pm-ds (node 42
(mt)
(node 66 (mt) (mt))))