Рефал тоже
2025-11-10 01:39Раз со Сноболом дело хорошо пошло, давайте и Рефальный алгоритм сопоставления тоже сбацаем на Gisp.
Вот здесь сам алгоритм и пять демонстрашек: refal_patterns.gisp
Запускаем:
Вот здесь сам алгоритм и пять демонстрашек: refal_patterns.gisp
Запускаем:
$ gisp refal_patterns.gisp
== Word split with s/w variables ==
Subject: (greetings from gisp world)
Pattern description: [s.first w.middle 'world]
Pattern data: ((var s first) (var w middle) world)
Matches: 1
#1
s.first = greetings
w.middle = (from gisp)
== Bracket structure with s/e variables ==
Subject: (sum (x plus y) done)
Pattern description: ['sum (s.lhs 'plus s.rhs) e.rest]
Pattern data: (sum (br ((var s lhs) plus (var s rhs))) (var e rest))
Matches: 1
#1
s.lhs = x
s.rhs = y
e.rest = (done)
== Repeated s-variable enforces equality ==
Subject: (dup x x)
Pattern description: ['dup s.sym s.sym]
Pattern data: (dup (var s sym) (var s sym))
Matches: 1
#1
s.sym = x
== Repeated variable mismatch ==
Subject: (dup x y)
Result: no match (as expected)
== Backtracking across e-variables ==
Subject: (a middle middle b)
Pattern description: [e.head 'middle e.tail]
Pattern data: ((var e head) middle (var e tail))
Matches: 2
#1
e.head = (a middle)
e.tail = (b)
#2
e.head = (a)
e.tail = (middle b)
== Clause evaluation (factorial skeleton) ==
fact(0) => (1)
fact(3) => (* 3 (fact 2))

no subject
Date: 2025-11-10 10:35 (UTC)no subject
Date: 2025-11-10 22:38 (UTC)no subject
Date: 2025-11-10 18:57 (UTC)no subject
Date: 2025-11-10 19:52 (UTC)