Clojure to język ogólnego przeznaczenia wspierający interaktywne programowanie, który zachęca do funkcjonalnego stylu programowania i upraszcza programowanie wielowątkowe.
Patrząc na dekoratorów Pythona, ktoś stwierdził, że są tak potężni jak makra Lisp (szczególnie Clojure). Patrząc na przykłady podane w PEP 318 , wydaje mi się, że są one po prostu fantazyjnym sposobem użycia zwykłych starych funkcji wyższego rzędu w Lisp: def attrs(**kwds): def decorate(f): for k in kwds: setattr(f, …
Jestem nowy w Clojure. Rozumiem kod, który piszę, ale później staje się zbyt trudny do zrozumienia. Trudno dopasować nawiasy. Jakie są ogólne konwencje dotyczące konwencji nazewnictwa i wcięć w różnych sytuacjach? Na przykład napisałem przykładowy przykład de-strukturyzacji, aby go zrozumieć, ale za drugim razem wygląda on całkowicie nieczytelny. (defn f …
Jestem całkiem nowy w świecie Clojure. Doceniam fakt, że można łatwo uzyskać dostęp do wszystkich bibliotek Java za pośrednictwem funkcji Clojure interop, ale zastanawiałem się, ile Clojure stoi na własnych nogach. Oczywiście istnieją pewne platformy, takie jak Android, gdzie zawsze wymagana będzie interoperacyjność z Javą, ponieważ podstawowe biblioteki są napisane …
Jakie są kluczowe różnice między dopasowaniem wzorców w tych dwóch językach? Nie odnoszę się do składni, ale możliwości, szczegółów implementacji, zakresu przypadków użycia i konieczności. Aplikacje Scala (np. Lift and Play) mówią z dumą o sprawności dopasowywania wzorców języków. Z drugiej strony Clojure ma bibliotekę, core.match i wbudowaną funkcję destrukcji, …
Tak jak papka, jak FP, w końcu wszystkie nasze programy mają strukturę. Oznacza to, że nie ma znaczenia, jak czyste lub funkcjonalne je wykonujemy - zawsze są tłumaczone na asembler, więc to, co faktycznie działa za maskami, to instrukcje, stany i pętle. Naśladujemy FP. Jako noob sprzętowy moje pytanie brzmi: …
Próbuję nauczyć się Lisp i patrzeć na wszystkie Lispy i ich różnice. Widzę, że w niektórych implementacjach Schematu można używać nawiasów kwadratowych zamiennie z nawiasami okrągłymi dla zapewnienia czytelności, więc ponieważ są one traktowane tak samo, zakładam, że nadal są one tylko wyrażeniami S, jak wszystko inne. Jednak w Clojure …
Słyszałem, że makra Clojure są łatwiejsze do pisania, ale nie tak niezawodne jak makra higieniczne Racket. Moje pytanie składa się z 2 części: Czym gensymróżnią się od makr higienicznych? Co zapewniają makra Racket, których nie ma Clojure? (czy to bezpieczeństwo, kompozycja, czy cokolwiek innego)
Jestem studentem trzeciego roku studiów licencjackich w programie inżynierii oprogramowania i wpadłem na pomysł, aby przeczytać SICP doradcy, aby uzyskać głębsze i bardziej fundamentalne zrozumienie zasad stojących za całym tym oprogramowaniem, które tworzymy. Zasugerował, aby nie uczyć się Schematu do ukończenia książki (ponieważ nie jest to tak powszechne jak współczesne …
Czytałem o bibliotekach napisanych przez ludzi dla języków takich jak Java i C #, które wykorzystują tkanie kodu bajtowego do robienia rzeczy takich jak przechwytywanie wywołań funkcji, wstawianie kodu rejestrującego itp. Czytałem również o makrach Lisp / Clojure w spróbuj lepiej zrozumieć, jak z nich korzystać. Im więcej czytam o …
O ile rozumiem, zarówno Scala, jak i Clojure zostały zaprojektowane jako nowe języki, które zależą od JVM i łatwo integrują się z kodem Java w tym sensie, że pozwalają na korzystanie z klas Java wewnątrz kodu Scala i Clojure. Począwszy od Java 8 (a może jeszcze mocniej w kolejnych wersjach …
Próbowałem dzisiaj ocenić wyrażenie Clojure z zagnieżdżonymi funkcjami stenograficznymi, ale nie pozwoliło mi to. Wyrażenie brzmiało: (#(+ % (#(+ % (* % %)) %)) 5) ; sorry for the eye bleed Wynik był: IllegalStateException Nested #()s are not allowed clojure.lang.LispReader$FnReader.invoke (LispReader.java:630) ...and a bunch of other garbage
Dużo sam kodowałem, miałem trochę doświadczenia z równoległymi modelami programowania: aktorzy, pamięć transakcyjna oprogramowania, przepływ danych. Kiedy próbuję zastosować te architektury w prawdziwym życiu - do aplikacji sieciowej o dużym obciążeniu - żaden model nie obsługuje trwałości i trwałości danych. Rzeczywiste zadania wymagają zapisania danych na końcu. Oznacza to, że …
Jedną z głównych zalet programowej pamięci transakcyjnej, o której zawsze się wspomina, jest kompozycyjność i modułowość. Różne fragmenty można łączyć w celu wytworzenia większych elementów. W programach opartych na blokadach często tak nie jest. Szukam prostego przykładu ilustrującego to faktycznym kodem. Wolałbym przykład w Clojure, ale Haskell też jest w …
Próbujesz nauczyć się Clojure, a nie możesz nie wiedzieć, jak Clojure jest o niezmiennych danych. Ale możesz łatwo zredefiniować zmienną, używając defprawa? Rozumiem, że programiści Clojure unikają tego, ale można uniknąć zmiany zmiennych w dowolnym języku tak samo. Czy ktoś może mi wyjaśnić, jak to jest inaczej, ponieważ myślę, że …
Zgodnie z zasadą rozdzielania zapytań , a także Myślenia w danych i DDD z prezentacjami Clojure, należy oddzielić skutki uboczne (modyfikujące świat) od obliczeń i decyzji, aby łatwiej było zrozumieć i przetestować obie części. Pozostawia to pytanie bez odpowiedzi: gdzie w stosunku do granicy powinniśmy postawić „zadawanie światu”? Z jednej …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.