File size: 687 Bytes
119e586
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(ns snapkitty.lisp.bridge.compiler
  "Compile LISP → knowledge graph"
  (:require [snapkitty.lisp.bridge.reader :as reader]))

(defn compile-form [form]
  "Compile a LISP form into structured knowledge"
  (cond
    (symbol? form) {:type :symbol :name (str form)}
    (number? form) {:type :number :value form}
    (string? form) {:type :string :value form}
    (list? form) {:type :sexpr
                  :head (first form)
                  :args (mapv compile-form (rest form))}
    :else {:type :unknown :value form}))

(defn compile-lisp [code]
  "Compile LISP code to knowledge structure"
  (let [forms (reader/read-lisp code)]
    (mapv compile-form forms)))