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.
Według mojego zrozumienia, funkcje częściowe są funkcjami, które otrzymujemy, przekazując do funkcji mniej parametrów niż oczekiwano. Na przykład, jeśli byłoby to bezpośrednio poprawne w Pythonie: >>> def add(x,y): ... return x+y ... >>> new_function = add(1) >>> new_function(2) 3 W powyższym fragmencie new_functionznajduje się funkcja częściowa. Jednak według Haskell Wiki …
Obecnie pracuję nad prostym tłumaczem dla języka programowania i mam taki typ danych: data Expr = Variable String | Number Int | Add [Expr] | Sub Expr Expr I mam wiele funkcji, które wykonują proste rzeczy, takie jak: -- Substitute a value for a variable substituteName :: String -> Int …
W moim projekcie muzycznym napotkałem niewielki problem estetyczny i od pewnego czasu mnie to denerwuje. Mam typ data Key = C | D | ...i mogę zbudować Scalea Keyi a Mode. W Moderozróżnia np główną i mniejszą skalę. Mogę zdefiniować Modetyp jako funkcję od Keydo Scale. W takim przypadku tryby …
W module System.Infowidzę te funkcje: os :: String arch :: String compilerName :: String compilerVersion :: Version Dlaczego tam nie IOma? Uzyskują dostęp do systemu ... Czy się mylę? Moje oczekiwania były jak: os :: IO String arch :: IO String compilerName :: IO String compilerVersion :: IO Version Przypadek …
Załóżmy, że mam parametr, który istnieje tylko na korzyść systemu typów, na przykład jak w tym małym programie: {-# LANGUAGE GADTs #-} module Main where import Data.Proxy import Data.List data MyPoly where MyConstr :: Proxy a -> a -> (Proxy a -> a -> Int -> Int) -> MyPoly listOfPolys …
Uczę się Aplikacji Haskella. Wydaje mi się (prawdopodobnie się mylę), że purefunkcja nie jest tak naprawdę potrzebna, na przykład: pure (+) <*> [1,2,3] <*> [3,4,5] można zapisać jako (+) <$> [1,2,3] <*> [3,4,5] Czy ktoś może wyjaśnić zalety tej purefunkcji w porównaniu z jawnym mapowaniem fmap?
To pytanie nie jest subiektywne. Bardzo konkretny czasownik jest używany w książce, do której się odwołuje, i chciałbym zrozumieć, jakie są implikacje tego sformułowania, ponieważ obawiam się, że coś źle zrozumiałem. W Learn You a Haskell poniższy akapit jest trzecim i ostatnim, który zawiera „zakładamy *”. data Barry t k …
Propozycje (P -> Q) -> Qi P \/ Qsą równoważne. Czy istnieje sposób, aby być świadkiem tej równoważności w Haskell: from :: Either a b -> ((a -> b) -> b) from x = case x of Left a -> \f -> f a Right b -> \f -> b …
Wydaje mi się, że zawsze można przekazywać argumenty funkcji, a nie klasę. Na przykład zamiast definiowania klasy równości: class Eq a where (==) :: a -> a -> Bool Używanie go w innych funkcjach do wskazywania argumentu typu musi być instancją Eq: elem :: (Eq a) => a -> [a] …
To pytanie teoretyczne dotyczy funkcji Haskella, które mogą przyjmować argumenty dowolnego typu. Czy istnieje różnica między sposobem działania z podpisami typu a -> b -> a i c -> a -> c są tworzone? Każda pomoc jest mile widziana.
Obecnie studiuję Haskell i staram się zrozumieć projekt, w którym Haskell wdraża algorytmy kryptograficzne. Po przeczytaniu „ Naucz się Haskella dla wielkiego dobra” w Internecie, zaczynam rozumieć kod z tego projektu. Potem okazało się, że utknąłem na następującym kodzie z symbolem „@”: -- | Generate an @n@-dimensional secret key over …
Wiele rodzajów optyki ma reprezentację van Laarhoven. Na przykład Lenstyp Lens s t a b może być reprezentowany jako: Functor f => (a -> f b) -> s -> f t Podobnie a Traversal, można przedstawić w podobny sposób, zamieniając Functorograniczenie na Applicative: Applicative f => (a -> f b) …
W moim projekcie Haskell, gdy ja stack run, pokazuje, ale nadal działa. Jakie to ostrzeżenie? Jak mogę się tego pozbyć? Stack has not been tested with GHC versions above 8.6, and using 8.8.2, this may fail Stack has not been tested with Cabal versions above 2.4, but version 3.0.1.0 was …
Mam ćwiczenie, w którym muszę zdefiniować typ reprezentujący listę z wartościami od 0 do 5. Najpierw pomyślałem, że mogę rozwiązać to tak rekurencyjnie: data List a = Nil | Content a (List a) Ale nie sądzę, że jest to właściwe podejście. Czy możesz mi dać do myślenia.
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.