Size: a a a

Scheme — русскоязычное сообщество

2021 November 02

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
не "в репле так же", а теория, что это только в репле. попробуй скомпилировать и выполнить
источник

AZ

Aydar Zarifullin in Scheme — русскоязычное сообщество
Я пробовал - ошибка
источник

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
scheme@(guile-user)> (define alst '(("a" . 1) ("b" . 2)))
scheme@(guile-user)> (set-cdr! (assoc "a" alst) 5)
scheme@(guile-user)> (assoc "a" alst)
$1 = ("a" . 5)

scheme@(guile-user)> (assoc-set! alst "a" 6)
ice-9/boot-9.scm:1685:16: In procedure raise-exception:
In procedure set-cdr!: Wrong type argument in position 1 (expecting mutable pair): ("a" . 5)

Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.

ну дратути, это вообще что такое..
источник

AZ

Aydar Zarifullin in Scheme — русскоязычное сообщество
Сломана только конкретная функция?
источник

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
разбираюсь, кажется она просто в списке "не безопасных" вот и ведёт себя так, её вызов по всей видимости даже не происходит, эта безопасность наверное где-то во флагах, копаю
источник

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
ну кроч это из за sandbox'a
источник

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
не ясно правда, как выполняться вне его т.к. при компиляции та же фигня🤔
источник

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
Mutation may allow a sandboxed evaluation to break some invariant in users of data supplied to it. A lot of code culturally doesn’t expect mutation, but if you hand mutable data to a sandboxed evaluation and you also grant mutating capabilities to that evaluation, then the sandboxed code may indeed mutate that data. The default set of bindings to the sandbox do not include any mutating primitives.

Relatedly, set! may allow a sandbox to mutate a primitive, invalidating many system-wide invariants. Guile is currently quite permissive when it comes to imported bindings and mutability. Although set! to a module-local or lexically bound variable would be fine, we don’t currently have an easy way to disallow set! to an imported binding, so currently no binding set includes set!.
источник

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
короче всё мутабельное запрещается, но запретить set! яиц не хватило т.к. всё сломается
источник

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
точнее, по всей видимости, запрещается мутабильность по отношению к объектам, созданым вне песочницы, а со своими данными можно делать что хочешь, по этому сконсеные вручную пары и модифицируются без проблем
источник

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
короче я расстроен
источник

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
может кто прояснит - я не смог:
1. Выполнить скомпилированный отдельно, через guild, байткод
2. Я не смог никаким другим способом установить уровень оптимизаций для компилируемого кода т.к. добавление в .guile не помогает, а флага в guile нет
источник

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
моя теория пока такая - это не сендбокс, а оптимизатор, анбоксит таплы и тем помещает их в стек, где они не могут быть изменены
источник

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
об этом в намекается в доке про VM, но ничего конкретного
источник
2021 November 05

Md

Mount d in Scheme — русскоязычное сообщество
А как вы объясняете поисковикам, что нужна функция именно из ЯП Scheme, а не просто какая-то схема?
источник

MK

Mikhail Kirillov in Scheme — русскоязычное сообщество
Можно искать по srfi
источник

Md

Mount d in Scheme — русскоязычное сообщество
дошло, можно добавить в поиске "-схема"
источник
2021 November 06

OV

Onyma Velesov in Scheme — русскоязычное сообщество
GNU Guile 2.0.11
Copyright (C) 1995-2014 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(guile-user)> (define alst '(("a" . 1) ("b" . 2)))
scheme@(guile-user)> alst
$2 = (("a" . 1) ("b" . 2))
scheme@(guile-user)> (set-cdr! (assoc "a" alst) 5)
scheme@(guile-user)> alst
$3 = (("a" . 5) ("b" . 2))
scheme@(guile-user)>
источник

OV

Onyma Velesov in Scheme — русскоязычное сообщество
источник

NV

Nikita Vorontsov in Scheme — русскоязычное сообщество
да, во втором гуиле нет такой проблемы, как и в любой другой реализации, кроме guile3
источник