vak: (Default)
[personal profile] vak
Раз со Сноболом дело хорошо пошло, давайте и Рефальный алгоритм сопоставления тоже сбацаем на 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))

Date: 2025-11-10 10:35 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Ни фига себе ты отжигаешь!!!

Date: 2025-11-10 18:57 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Курсор знает рефал?