snapkitty
compilers
javascript
6502-asm
File size: 2,213 Bytes
e870690
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import Foundation

public struct LispMachine {
    public init() {}

    public enum LispValue {
        case number(Double)
        case string(String)
        case list([LispValue])
        case symbol(String)
        case null
    }

    public func eval(_ input: String) -> String {
        let trimmed = input.trimmingCharacters(in: .whitespaces)
        guard trimmed.hasPrefix("("), trimmed.hasSuffix(")") else {
            return "Error: Not an s-expression"
        }
        let inner = String(trimmed.dropFirst().dropLast())
        let parts = inner.components(separatedBy: " ")
        guard let op = parts.first else { return "Error: Empty expression" }

        switch op {
        case "+":
            let nums = parts.dropFirst().compactMap { Double($0) }
            return String(nums.reduce(0, +))
        case "-":
            let nums = parts.dropFirst().compactMap { Double($0) }
            guard let first = nums.first else { return "0" }
            return String(nums.dropFirst().reduce(first, -))
        case "*":
            let nums = parts.dropFirst().compactMap { Double($0) }
            return String(nums.reduce(1, *))
        case "/":
            let nums = parts.dropFirst().compactMap { Double($0) }
            guard let first = nums.first, let second = nums.dropFirst().first, second != 0 else { return "Error" }
            return String(first / second)
        case "agent-status":
            return "ENKI: active (sim) — tension proposer\nSENTINEL: active (sim) — claim auditor\nAll local, no remote."
        case "trust-score":
            return "trust: 75%\nevents: 10\nseals: 5"
        case "draw-agent":
            return """

                  .---.

                 /     \\      [LISP AGENT: AWAKE]

                | () () |     [TRUST: VERIFIED]

                 \\  ^  /      [ADA CONTRACT: ALLOWED]

                  |||||       [WOZ VAULT: ONLINE]

            """
        case "woz-vault-count":
            return "10"
        case "seal-state":
            return "sealed_events: 5\nlast_seal: 0x1a2b3c..."
        default:
            return "Unknown function: \(op)"
        }
    }
}