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.
Od jakiegoś czasu zajmuję się programowaniem w języku F # i podoba mi się to. Jednak jedno słowo, które wiem, że nie istnieje w F #, to typy wyższego rodzaju. Przeczytałem materiały o typach wyższego rzędu i myślę, że rozumiem ich definicję. Po prostu nie jestem pewien, dlaczego są przydatne. …
Zamknięte . To pytanie jest oparte na opinii . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć, podając fakty i cytaty, edytując ten post . Zamknięte 2 lata temu . Popraw to pytanie Bardzo długo myślałem o tym pytaniu, ale naprawdę nie …
Ten fragment kodu Haskella działa znacznie wolniej -O, ale nie -Opowinien być niebezpieczny . Czy ktoś może mi powiedzieć, co się stało? Jeśli ma to znaczenie, jest to próba rozwiązania tego problemu i wykorzystuje wyszukiwanie binarne i trwałe drzewo segmentów: import Control.Monad import Data.Array data Node = Leaf Int -- …
Niedawno ukończyłem kurs uniwersytecki, na którym występowali Haskell i Agda (zależny funkcjonalny język programowania typizowanego) i zastanawiałem się, czy jest możliwe zastąpienie w nich rachunku lambda logiką kombinacyjną. W przypadku Haskella wydaje się to możliwe przy użyciu kombinatorów S i K, dzięki czemu jest to bezcelowe. Zastanawiałem się, jaki jest …
Byłem trochę zdezorientowany dokumentacją fix(chociaż myślę, że rozumiem teraz, co ma robić), więc spojrzałem na kod źródłowy. To mnie bardziej zdezorientowało: fix :: (a -> a) -> a fix f = let x = f x in x Jak dokładnie zwraca to stały punkt? Postanowiłem wypróbować to w linii poleceń: …
Próbuję zrozumieć, co robi operator kropki w tym kodzie Haskella: sumEuler = sum . (map euler) . mkList Cały kod źródłowy znajduje się poniżej. Moje zrozumienie Operator kropki przyjmuje jako dane wejściowe dwie funkcje sumoraz wynik map euleri wynik mkListfunkcji. Ale sumczy funkcja nie jest argumentem funkcji, prawda? Więc co …
Jak uzyskać esqueleto do generowania ciągu SQL z frominstrukcji? Dokumentacja toRawSqlmówi, że „możesz po prostu włączyć trwałe logowanie zapytań”. Wypróbowałem wszystkie możliwe formy tego MonadLogger, co mogłem zrozumieć, ale nigdy nie wydrukowałem żadnego SQL. Ta sama dokumentacja mówi również, że „ręczne użycie tej funkcji ... jest możliwe, ale żmudne”. Jednak …
Podczas kompilowania mojej aplikacji Haskell z -Wallopcją GHC narzeka na osierocone instancje, na przykład: Publisher.hs:45:9: Warning: orphan instance: instance ToSElem Result Klasa typu ToSElemnie jest moja, jest zdefiniowana przez HStringTemplate . Teraz wiem, jak to naprawić (przenieść deklarację instancji do modułu, w którym zadeklarowano Wynik) i wiem, dlaczego GHC wolałby …
W obecnym stanie to pytanie nie pasuje do naszego formatu pytań i odpowiedzi. Oczekujemy, że odpowiedzi będą poparte faktami, referencjami lub ekspertyzą, ale to pytanie prawdopodobnie będzie wymagało debaty, argumentów, ankiet lub rozszerzonej dyskusji. Jeśli uważasz, że to pytanie można poprawić i prawdopodobnie ponownie otworzyć, odwiedź centrum pomocy, aby uzyskać …
Biorąc pod uwagę : data Foo = FooString String … class Fooable a where --(is this a good way to name this?) toFoo :: a -> Foo Chcę utworzyć Stringprzykład Fooable: instance Fooable String where toFoo = FooString GHC następnie narzeka: Illegal instance declaration for `Fooable String' (All instance types …
Średnia Biblioteka Haskell typeclasses MonadPlus, Alternativei Monoidkażdy zapewniają dwie metody z zasadniczo tą samą składnię: Pusta wartość: mzero, empty, lub mempty. Operator a -> a -> a, który łączy wartości w typeclass razem: mplus, <|>, lub mappend. Wszystkie trzy określają te prawa, których powinny przestrzegać instancje: mempty `mappend` x = …
Napisałem ten mały fragment Haskella, aby dowiedzieć się, jak GHC udowadnia, że w przypadku liczb naturalnych można zmniejszyć o połowę tylko te parzyste: {-# LANGUAGE DataKinds, GADTs, KindSignatures, TypeFamilies #-} module Nat where data Nat = Z | S Nat data Parity = Even | Odd type family Flip (x …
goDużo widzę czytając materiał lub źródło Haskella, ale nigdy nie czułem się z tym komfortowo - (myślę, że ma to negatywne konotację „goto”). Zacząłem uczyć się języka Haskell z LYAH i wtedy wychwyciłem tendencję do używania acci steppisania fałd. Skąd się wzięła konwencja pisania go? A co najważniejsze, co dokładnie …
(Mam nadzieję, że to pytanie jest na temat - próbowałem poszukać odpowiedzi, ale nie znalazłem ostatecznej odpowiedzi. Jeśli zdarzy się, że jest to nie na temat lub już odpowiedziałem, moderuj / usuń je.) Pamiętam, że kilka razy słyszałem / czytałem pół-żartobliwy komentarz, że Haskell jest najlepszym językiem imperatywnym , co …
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.