Ch5 Nightly 4
Today we are writing code that attempts to match a segment at every
possible endpoint. We are building off of a skeleton of
segment-match
that we wrote in class (or for Nightly 3).
Note: as discussed in class, a (x . y)
is the same as (cons x y)
. If y
is not a list, this will display as (x . y)
. If y
is a
list, say (list a b c)
, then (cons x (list a b c))
is exactly the
same as (list x a b c)
so that is what you will see displayed.
Tests
Your code should do at least this much.
(assert-equal '((?x . (He ate fast and he drank fast)))
(segment-match '((?* ?x) fast)
'(He ate fast and he drank fast)))
(assert-false (segment-match '((?* ?x) fast) '(He is slow)))
(assert-false (segment-match '((?* ?x) fast) '(He is fast and slow)))
Note that the last one will require you to fail from pat-match
not
in the segment-match
.