Korzystanie z sekty i gniazd w schemacie
Staram się poznać początki FP, korzystając z „Algorytmów programowania funkcyjnego”. W rozdziale 2 autor wprowadza słowa kluczowe sect
i <>
. Jedną z procedur opisanych w książce byłoby:
(define add1 (sect + <> 1))
Użyłem Repl.it do obliczenia procedury. Ale niestety rzuca następujący błąd:
Error: execute: unbound symbol: "<>" []
Potem wypróbowałem Racket, ponieważ przeczytałem tutaj, że Repl.it używa BiwaScheme, który nie obsługuje w pełni żadnego standardu Scheme. Ale potem pojawił się kolejny błąd:
sect: undefined;
cannot reference an identifier before its definition
Więc czy robię coś nie tak? A może jest inny edytor / IDE, którego powinienem użyć?
Odpowiedzi
Myliłem się, oba sect
i <>
nie są słowami kluczowymi Schematu. We wstępie wspomina się, że autor używa (afp primitives)
biblioteki do prymitywnych procedur i rozszerzeń składni. Korzystając z tej biblioteki, masz do dyspozycji kilka dodatkowych procedur.
Możesz go pobrać tutaj .
Rakieta jest wyposażona w add1funkcję; nie ma potrzeby definiowania własnego.
I obsługuje SRFI-26 cut
, który sect
wygląda na to, co wygląda pod inną, bardziej popularną nazwą:
> (require srfi/26)
> ((cut + 1 <>) 2)
3