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.
Zamknięte. To pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby było na temat przepełnienia stosu. Zamknięte 4 lata temu . Popraw to pytanie Istnieje wiele funkcjonalnych idiomów: monady, aplikacje, strzałki itp. Są one udokumentowane w różnych artykułach, ale niestety …
Nie mogę zrozumieć, dlaczego m1 najwyraźniej jest zapamiętywany, podczas gdy m2 nie znajduje się w następującym: m1 = ((filter odd [1..]) !!) m2 n = ((filter odd [1..]) !! n) m1 10000000 zajmuje około 1,5 sekundy przy pierwszym połączeniu i ułamek tego czasu przy kolejnych (przypuszczalnie buforuje listę), natomiast m2 …
Jaka jest typeklasa Comonad w Haskell? Tak jak w Comonad z Control.Comonad w pakiecie comonad (mile widziane są również wyjaśnienia wszystkich innych pakietów, które zapewniają typeklasę Comonad). Niewyraźnie słyszałem o Comonad, ale tak naprawdę wiem tylko o tym, że jest to extract :: w a -> acoś w rodzaju paraleli …
Niedawno odkryłem, że dziury typu połączone z dopasowywaniem wzorców na próbach zapewniają całkiem przyjemne doświadczenie w stylu Agdy w Haskell. Na przykład: {-# LANGUAGE DataKinds, PolyKinds, TypeFamilies, UndecidableInstances, GADTs, TypeOperators #-} data (==) :: k -> k -> * where Refl :: x == x sym :: a == b …
Mam trzy funkcje, które znajdują n-ty element listy: nthElement :: [a] -> Int -> Maybe a nthElement [] a = Nothing nthElement (x:xs) a | a <= 0 = Nothing | a == 1 = Just x | a > 1 = nthElement xs (a-1) nthElementIf :: [a] -> Int …
Wczoraj dowiedziałem się o nowym narzędziu Haskell o nazwie Stack . Na pierwszy rzut oka wygląda na to, że robi to samo, co Cabal. Jaka jest więc różnica między nimi? Czy stos zastępuje Cabal? W jakich przypadkach powinienem używać Stack zamiast Cabal? Co może zrobić Stack, czego Cabal nie może?
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 ewentualnie ponownie otworzyć, odwiedź centrum pomocy, aby uzyskać …
Podczas rozwiązywania niektórych problemów projektu Eulera, aby nauczyć się Haskella (więc obecnie jestem całkowicie początkującym), natknąłem się na Problem 12 . Napisałem to (naiwne) rozwiązanie: --Get Number of Divisors of n numDivs :: Integer -> Integer numDivs n = toInteger $ length [ x | x<-[2.. ((n `quot` 2)+1)], n …
Bezpieczeństwo typów Haskella nie ma sobie równych tylko w przypadku języków z typami zależnymi. Ale w Text.Printf zachodzi pewna głęboka magia, która wydaje się raczej dziwna . > printf "%d\n" 3 3 > printf "%s %f %d" "foo" 3.3 3 foo 3.3 3 Jaka kryje się za tym głęboka magia? …
Algebraiczne typy danych (ADTS) w Haskell może automatycznie stają się przypadki niektóre typeclasse s (jakShow,Eq) poprzez wynikające z nich. data Maybe a = Nothing | Just a deriving (Eq, Ord) Moje pytanie brzmi: jak to derivingdziała, tj. Skąd Haskell wie, jak zaimplementować funkcje wyprowadzonej typeklasy dla wyprowadzającego ADT? Ponadto, dlaczego …
Zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby skupiało się tylko na jednym problemie, edytując ten post . Zamknięte 5 lat temu . Popraw to pytanie Języki funkcjonalne są dobre, ponieważ pozwalają uniknąć błędów, eliminując stan, ale także …
Obecne zachowanie Prelude> show _ <interactive>:7:6: Found hole ‘_’ with type: a0 Where: ‘a0’ is an ambiguous type variable Relevant bindings include it :: String (bound at <interactive>:7:1) In the first argument of ‘show’, namely ‘_’ In the expression: show _ In an equation for ‘it’: it = show _ …
map :: (a -> b) -> [a] -> [b] fmap :: Functor f => (a -> b) -> f a -> f b liftM :: Monad m => (a -> b) -> m a -> m b Dlaczego mamy trzy różne funkcje, które zasadniczo robią to samo?
Właśnie zacząłem nowy projekt Haskell i od samego początku chciałem ustawić dobry przepływ pracy podczas testowania. Wygląda na to, że Haskell ma wiele doskonałych i unikalnych narzędzi testowych oraz wiele różnych sposobów ich integracji. Przyjrzałem się: HUnit Szybkie sprawdzenie wyciskanie HPC złożoność Które wszystkie wydają się działać bardzo dobrze w …
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.