-(define-record-type <command-handler>
- (make-command-handler matcher should-handle action)
- command-handler?
- (matcher command-handler-matcher)
- (should-handle command-handler-should-handle?)
- (action command-handler-action))
+(define (cmatch-direct-obj-greedy phrase)
+ ;; Turns out this uses the same semantics as splitting verb/rest
+ (match (split-verb-and-rest phrase)
+ ((direct-obj . rest)
+ (list #:direct-obj direct-obj
+ #:rest rest))
+ (#f #f)))