Często chcę uruchomić mały fragment kodu w innym obszarze nazw - na przykład kopię/wklejenie fragmentu kodu DSL i chciałbym uniknąć konieczności:Uruchamiaj kod osadzony z innej przestrzeni nazw
- Dodaj kilka klauzul
use
do mojej obecnej deklaracji przestrzeni nazw. To sprawia, że deklaracja ns jest chaotyczna, dodaje dodatkowe prace konserwacyjne, a czasem grozi konfliktami nazw. - Dodaj klauzule
require
i zostań zmuszony do dodania do wszystkich kwalifikatora lub aliasu przestrzeni nazw. Teraz mój kod DSL jest znacznie bardziej nieuporządkowany.
Idealnie wolałbym być w stanie zrobić coś takiego:
(with-ns my.namespace
(foo bar baz))
Gdzie foo
, bar
może być symbole wewnątrz my.namespace
, ale baz
jest symbol w bieżącym (zamykającego) nazw. Tak więc kod działa w czymś podobnym do "lokalnej" przestrzeni nazw, która "wykorzystuje" moją-przestrzeń nazw w swoim zasięgu, ale w inny sposób nie wpływa na otaczającą przestrzeń nazw.
Czy istnieje standardowy/lepszy sposób na zrobienie tego? A może chcesz to zrobić?
używam obciążenia plik do rodzaju dostać to, to hack: -/Więc nie jesteś jedyny, wciąż może być szalony. –
@Arthur - hmmm zobacz, jak to może działać, ale często fragment nie znajduje się w osobnym pliku, również wydaje się nadużyciem systemu plików, kiedy tego nie potrzebujemy. Dobrze cię poznać w Conj BTW! – mikera
Ogranicza się, ponieważ używa DSL (w moim przypadku definicje sieci + vm muszą być jedno na plik, więc nie jest to dobra odpowiedź, fajnie było Cię poznać :) –