Haskell to funkcjonalny język programowania z silnym typowaniem statycznym, leniwą oceną, szeroką obsługą równoległości i współbieżności oraz unikalnymi możliwościami abstrakcyjnymi.
Zrobiłem demona, który używał bardzo prymitywnej formy ipc(telnet i wysyłanie łańcucha, który zawierał określone słowa w określonej kolejności). Wyskoczyłem z tego i używam teraz JSONdo przekazywania wiadomości na Yesodserwer. Jednak było kilka rzeczy, które bardzo mi się podobały w moim projekcie i nie jestem pewien, jakie mam teraz wybory. Oto, …
Staram się, aby typy ghci wyświetlane w moich bibliotekach były jak najbardziej intuicyjne, ale napotykam wiele trudności podczas korzystania z bardziej zaawansowanych funkcji czcionek. Powiedzmy, że mam ten kod w pliku: {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} import GHC.TypeLits data Container (xs::[*]) = Container …
Niedawno dwukrotnie refaktoryzowałem kod, aby zmienić kolejność parametrów, ponieważ było zbyt dużo kodu, w którym hacki takie jak fliplub \x -> foo bar x 42miały miejsce. Jakie zasady pomogą mi jak najlepiej wykorzystać curry podczas projektowania podpisu funkcji?
Jeśli funkcjonalne języki programowania nie mogą zapisać żadnego stanu, w jaki sposób robią proste rzeczy, takie jak czytanie danych wejściowych od użytkownika? W jaki sposób „przechowują” dane wejściowe (lub przechowują jakiekolwiek dane?) Na przykład: w jaki sposób ta prosta rzecz w C mogłaby przełożyć się na funkcjonalny język programowania, taki …
Pracuję nad napisaniem sobie schematu w 48 godzin (mam do około 85 godzin) i dotarłem do części dotyczącej dodawania zmiennych i przypisań . W tym rozdziale jest duży skok koncepcyjny i żałuję, że nie wykonano go w dwóch krokach z dobrą refaktoryzacją pomiędzy, a nie przeskakiwaniem od razu do ostatecznego …
Hackage ma kilka pakietów dla transformatorów monad: mtl : Biblioteka transformatorów Monad transformatory : funktor do betonu i transformatory monadowe monads-fd : Klasy Monad, używające zależności funkcjonalnych monads-tf : Klasy Monad, używające rodzin typów monadLib : kolekcja transformatorów monad. mtl-tf : biblioteka transformatorów Monad korzystająca z rodzin typów. mmtl : …
Czy ktoś może mi powiedzieć, dlaczego Haskell Prelude definiuje dwie oddzielne funkcje potęgowania (tj. ^I **)? Myślałem, że system typów miał wyeliminować tego rodzaju powielanie. Prelude> 2^2 4 Prelude> 4**0.5 2.0
Czytając https://en.uncyclopedia.co/wiki/Haskell (i ignorując wszystkie „obraźliwe” rzeczy), natknąłem się na następujący fragment zaciemnionego kodu: fix$(<$>)<$>(:)<*>((<$>((:[{- thor's mother -}])<$>))(=<<)<$>(*)<$>(*2))$1 Kiedy uruchamiam ten fragment kodu w ghci(po zaimportowaniu Data.Functioni Control.Applicative), ghciwyświetla listę wszystkich potęg 2. Jak działa ten fragment kodu?
Próbuję wyobrazić sobie kilka prostych, automatycznych układów fizycznych (takich jak wahadło, ramiona robotów itp.) W Haskell. Często systemy te można opisać równaniami takimi jak df/dt = c*f(t) + u(t) gdzie u(t)reprezentuje rodzaj „inteligentnej kontroli”. Systemy te bardzo dobrze pasują do paradygmatu programowania funkcjonalnego reaktywnego. Więc złapałem książkę „Haskell Szkołę wyrażenie” …
Wszyscy wiemy (lub powinniśmy wiedzieć), że Haskell jest domyślnie leniwy. Nic nie jest oceniane, dopóki nie musi zostać ocenione. Kiedy więc trzeba coś ocenić? Są punkty, w których Haskell musi być surowy. Nazywam te „punktami ścisłości”, chociaż ten konkretny termin nie jest tak rozpowszechniony, jak myślałem. Jeśli chodzi o mnie: …
Klasycznym ćwiczeniem programistycznym jest napisanie interpretera Lisp / Scheme w Lisp / Scheme. Możliwości pełnego języka można wykorzystać do stworzenia tłumacza dla podzbioru języka. Czy jest podobne ćwiczenie dla Haskella? Chciałbym zaimplementować podzbiór Haskell, używając Haskella jako silnika. Oczywiście można to zrobić, ale czy są dostępne do obejrzenia jakieś zasoby …
W mojej ostatniej pracy z Gibbs samplingwielkim wykorzystaniem RVar, moim zdaniem, zapewnia prawie idealny interfejs do generowania liczb losowych. Niestety, nie mogłem skorzystać z Repa ze względu na brak możliwości korzystania z monadycznych działań na mapach. Chociaż wyraźnie mapy monadyczne nie mogą być generalnie zrównoleglane, wydaje mi się, że RVarmoże …
Odkryłem dzisiaj polecenie „time” w Uniksie i pomyślałem, że użyję go do sprawdzenia różnicy w czasie wykonywania między ogonowymi funkcjami rekurencyjnymi a normalnymi rekurencyjnymi funkcjami w Haskellu. Napisałem następujące funkcje: --tail recursive fac :: (Integral a) => a -> a fac x = fac' x 1 where fac' 1 y …
Generalnie słyszałem, że kod produkcyjny powinien unikać używania Lazy I / O. Moje pytanie brzmi: dlaczego? Czy używanie Lazy I / O poza zwykłą zabawą jest w porządku? A co sprawia, że alternatywy (np. Rachmistrzowie) są lepsze?
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.