Size: a a a

Сообщество Scheme

2020 January 14

AZ

Aydar Zarifullin in Сообщество Scheme
SRFI 179: Nonempty Intervals and Generalized Arrays (Updated)

This SRFI specifies an array mechanism for Scheme. Arrays as defined here are quite general; at their most basic, an array is simply a mapping, or function, from multi-indices of exact integers to Scheme values.

https://srfi.schemers.org/srfi-179/
источник
2020 January 16

AZ

Aydar Zarifullin in Сообщество Scheme
GNU Guile 3.0.0 released

The principal new feature in Guile 3.0 is just-in-time (JIT) native code generation.

https://www.gnu.org/software/guile/news/gnu-guile-300-released.html
источник
2020 January 17

Т

Тар in Сообщество Scheme
мгновенно
источник
2020 January 22

AZ

Aydar Zarifullin in Сообщество Scheme
SRFI 180: JSON

This library describes a JavaScript Object Notation (JSON) parser and printer.

https://srfi.schemers.org/srfi-180/
источник

PG

Pïg Grëënëst in Сообщество Scheme
а оно нужно?
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Pïg Grëënëst
а оно нужно?
Ну да, хоть какая-то стандартизация между реализациями.
источник

AK

Andrew Kravchuk in Сообщество Scheme
Ещё драфт пока
источник
2020 January 25

b⛅

bouncepaw ⛅ in Сообщество Scheme
как круто сделать?:

есть список, например (1 2 3 4 5). Надо заменять все последовательности 1 2 на 0.

например, (f (list 1 2 3 4 5)) = (list 0 3 4 5)
источник

b⛅

bouncepaw ⛅ in Сообщество Scheme
нужна имплементация f. За один проход она должна все последовательности в списке заменить. У последовательностей в начале приоритет. Можно задавать несколько последовательностей для замены
источник

b⛅

bouncepaw ⛅ in Сообщество Scheme
может, такое уже есть готовое?
источник

b⛅

bouncepaw ⛅ in Сообщество Scheme
пишу на куриной схеме
источник

PG

Pïg Grëënëst in Сообщество Scheme
это парсер получается
источник

b⛅

bouncepaw ⛅ in Сообщество Scheme
Pïg Grëënëst
это парсер получается
погуглил про parser combinator, чёт это другое вроде
источник

b⛅

bouncepaw ⛅ in Сообщество Scheme
bouncepaw ⛅
нужна имплементация f. За один проход она должна все последовательности в списке заменить. У последовательностей в начале приоритет. Можно задавать несколько последовательностей для замены
так, есть идея для прямолинейной имплементации
источник

b⛅

bouncepaw ⛅ in Сообщество Scheme
ах да, забыл сказать, что для моей задачи ограничена длина последовательности для замены: 2. Это всё упрощает, полагаю
источник

PG

Pïg Grëënëst in Сообщество Scheme
значит тебе нужен LL(2) парсер
источник

b⛅

bouncepaw ⛅ in Сообщество Scheme
(import matchable (srfi 1))

(define (seq-match2 match-λ lst)
 (let loop ((acc '()) (rest lst))
   (cond
     ((null? rest) (reverse acc))
     ((and (> (length rest) 2))
      (match (match-λ (take rest 2))
             ((#t . replacee)
              (loop (cons replacee acc)
                    (cddr rest)))
             (#f
              (loop (cons (car rest) acc)
                    (cdr rest)))))
     (else (loop (cons (car rest) acc)
                 (cdr rest))))
   ))

(define seq (list 1 5 1 2 3 4))
(print (seq-match2
        (match-lambda
          ((1 2) (cons #t 0))
          (_ #f))
        seq))
;; OUTPUT: (1 5 0 3 4) ✓
источник

b⛅

bouncepaw ⛅ in Сообщество Scheme
вроде нормик
источник

b⛅

bouncepaw ⛅ in Сообщество Scheme
Pïg Grëënëst
значит тебе нужен LL(2) парсер
нифига какая штучка
источник

b⛅

bouncepaw ⛅ in Сообщество Scheme
прикольно, целая наука про парсеры есть, не знал раньше. Статьи на википедии пестрят магическими обозначениями
источник