Length in Logic
This problem uses the Logic starter file located here.
Write facts to define length
. You may use anything already included in the starter file as well as other facts defined in previous questions.
(fact (length ; YOUR CODE HERE ))
(query (length (1 2 3) 3))
; expect Success!
(query (length (1 2 3 4 5) ?length))
; expect Success! ; length: 5
(fact (length () 0))
(fact (length (?first . ?rest) ?num)
(increment ?some-num ?num)
(length ?rest ?some-num))
First we define our base fact. The length of the empty list is 0. Then, in our recursive fact, we break up the list into first
and rest
. The length of the entire list is the length of the rest
incremented by 1. So, we create a temporary variable some-num
that relates the length of the rest
with the length of the entire list.
I don't claim to be perfect so if you find an error on this page, please send me an email preferably with a link to this page so that I know what I need to fix!