Chicken Scheme: несвязанная переменная make-table - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь объявить хеш-таблицу.На основании этой SRFI я считаю, что форма (define x (make-table)) должна приводить к правильному поведению;Однако я получаю следующую ошибку.

CHICKEN
(c) 2008-2017, The CHICKEN Team
(c) 2000-2007, Felix L. Winkelmann
Version 4.12.0 (rev 6ea24b6)
linux-unix-gnu-x86-64 [ 64bit manyargs dload ptables ]
compiled 2017-02-19 on yves.more-magic.net (Linux)

#;1> (make-table)

Error: unbound variable: make-table

        Call history:

        eval.scm:211: ##sys#get   
        eval.scm:218: values      
        eval.scm:255: ##sys#alias-global-hook     
        modules.scm:769: ##sys#qualified-symbol?          
        modules.scm:777: ##sys#active-eval-environment    
        modules.scm:777: g2354    
        modules.scm:784: mrename          
        modules.scm:762: ##sys#current-module     
        eval.scm:259: ##sys#symbol-has-toplevel-binding?     
        eval.scm:265: ##sys#symbol-has-toplevel-binding?     
        library.scm:1668: after   
        eval.scm:857: g1785       
        <eval>    (make-table)
        library.scm:4051: ##sys#get-call-chain    
        library.scm:3834: ##sys#make-vector       
        library.scm:1371: ##sys#allocate-vector         <--

Кроме того, я получаю похожие ошибки для других функций.Возможно ли, что я неправильно установил переводчик?

1 Ответ

0 голосов
/ 19 ноября 2018

CHICKEN не поставляется с SRFI 90, и, насколько я могу судить, до сих пор никто не сделал яйцо для него.Однако более ранняя и наиболее часто используемая библиотека хеш-таблиц SRFI-69 является частью ядра .Он также недоступен по умолчанию, вам нужно использовать его следующим образом:

(use srfi-69)

В CHICKEN 5 (который я настоятельно рекомендую вам установить, так как он имеет много улучшений и в настоящее время поддерживается основнымверсия), SRFI-69 больше не является частью ядра, но может быть установлен как яйцо через chicken-install.Там use больше не существует.Вместо этого после установки яйца вы можете импортировать его следующим образом:

(import srfi-69)

Кроме того, SRFI - это «запросы на реализацию», и не каждая система Scheme реализует каждый отдельный SRFI.Иногда, потому что люди возражают против SRFI (некоторые спорны), иногда потому, что никто не обошел его, иногда, потому что SRFI нереализуем / имеет смысл для конкретной Схемы (например, C FFI не имеет смысла в запущенной Схемена JVM).

Вы должны проверить функции своей Схемы, чтобы увидеть, включен ли SRFI, который вы хотите использовать.Обратите внимание, что для CHICKEN многие SRFI реализуются вне ядра через яйца.Ядро CHICKEN включает только несколько SRFI, таких как 0, 1, 2, 4, 6, 8, 9, 11, 13, 14, 15, 16, 17, 23, 30, 39, 55, 69. В CHICKEN 5,SRFIs 1, 13, 14 и 69 были извлечены из ядра, поскольку они могут быть реализованы внешне довольно легко.Посмотрите список яиц , чтобы узнать больше реализаций SRFI.

Редактировать: Я забыл, есть вики-страница , которая стремится исчерпывающе перечислить все поддерживаемые SRFI.Он еще не обновлялся для CHICKEN 5, но список в конечном итоге должен быть таким же, поскольку все больше и больше яиц переносятся с CHICKEN 4 на 5 (и даже становятся длиннее, учитывая, что CHICKEN 5 видит много нового развития).

...