-
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathExercise_4_60.rkt
More file actions
22 lines (17 loc) · 677 Bytes
/
Copy pathExercise_4_60.rkt
File metadata and controls
22 lines (17 loc) · 677 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#lang racket/base
(require racket/string) ;; string-append*
;; different order means different data
(define (name->string person)
(string-append* (map symbol->string person)))
(define (name>? person-1 person-2)
(string>? (name->string person-1)
(name->string person-2)))
(rule (lives-near ?person-1 ?person-2)
(and (address ?person-1 (?town . ?rest-1))
(address ?person-2 (?town . ?rest-2))
(lisp-value name>? ?person-1 ?person-2)))
;;; Query results:
(lives-near (Reasoner Louis) (Aull DeWitt))
(lives-near (Reasoner Louis) (Bitdiddle Ben))
(lives-near (Hacker Alyssa P) (Fect Cy D))
(lives-near (Bitdiddle Ben) (Aull DeWitt))