Jeśli przez „Scheme Standard (w Racket IDE),” masz na myśli język rakieta, czyli to, co dostajesz, kiedy prefiks kodu z #lang racket,
wówczas czterech największych różnic należy zwrócić uwagę to:
- inny system modułowy
- inny system makro (w zależności od tego jak stary kod jest)
- niezmiennych minusy komórek (chyba że zaimportować te zmienne)
- nikt uzbrojonych IFS w Racket (użyj
when
)
Aby przesłać kod z Guile do Racket, sprawdź, które pliki są "na dole" twoich zależności, tj. Znajdź pliki, które nie zależą od innych plików. Otwórz taki plik w Racket, dodaj linię #lang na górze i spróbuj go uruchomić.
Najprawdopodobniej wystąpią błędy "niezwiązanego identyfikatora". Jeśli masz szczęście, funkcja jest dostępna w Racket, ale nie jest zawarta w języku "rakieta". Wyszukaj nazwę w dokumentacji Racket, a jeśli ją znajdziesz, użyj (wymaga ...), aby zaimportować nazwę do swojego programu.
Następnie uruchom ponownie program, aby znaleźć następny błąd.
Niektóre funkcje są nazywane w różny sposób w Guile i rakieta, więc poszukaj nazwy w dokumentacji Guile i zobaczyć, co robi. Następnie otwórz dokumentację rakietową na ten sam temat i zobacz, jak się nazywa w Rakiecie.
W niektórych przypadkach konieczne może być wprowadzenie większych zmian. Jeśli nie możesz znaleźć jakiegoś elementu funkcjonalności w dokumentacji Racket, spróbuj zapytać o listę mailingową. Możliwe, że po prostu ma inną nazwę lub ktoś ją zaimplementował i umieścił na PLaneT (w ten sposób nie pojawi się w dokumentacji, dopóki nie zainstalujesz pakietu).
Przykład importowania srfi/1 do języka R5RS.
#lang r5rs
(#%require srfi/1)
(xcons 1 2)
Różnice z kodem R4RS do nowoczesnego programu?
Jedną z rzeczy, na które należy zwrócić uwagę, jest to, że w R4RS pusta lista "() została uznana za fałszywą, nie jest interpretowana jako prawdziwa.
Zobacz to pytanie za więcej rzeczy zwrócić uwagę:
Running SICP Pattern Matching Rule Based Substitution Code
Zobacz również ta lista zmian od standardu R5RS: List of changes from R4RS to R5RS
Jeśli zatrzymany ściśle z R5RS i W takim przypadku pomocne mogą być standardy R6RS, a następnie języki kompatybilności wbudowane w Racket. Zobacz: http://docs.racket-lang.org/guide/standards.html – dyoo
Czy możesz określić, który język deklarujesz w DrRacket (R5RS/racket/etc)? Czy mógłbyś podać przykłady tego, gdzie łamany jest kod? – oobivat
@oobivat Celowo zamoczyłem sieć - pytanie, które kryje się za moim pytaniem, brzmi: "co to jest niestandardowy schemat w schemacie podstępu". Jeśli łatwiej odpowiedzieć na to pytanie, określę to jako "Co może zepsuć mój kod schematu przekrętów z 1994 r., Gdy działa w trybie Racket ustawionym na R5RS - i jak mogę to naprawić?" – hawkeye