Pytania otagowane jako haskell

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.




3
W jaki sposób (-) pozornie mogą mieć dwa różne typy?
W ghci, kiedy piszę :t (-) aby dowiedzieć się, jaki typ (-), zwraca (-) :: Num a => a -> a -> a Jednak kiedy piszę, -1haskell zwraca liczbę, co wydaje się sugerować, że (-)jest typu Num a => a -> a. Jak (-)pozornie mogą mieć dwa różne typy?
12 haskell 



1
Dziwne zachowanie (^) w Haskell
Dlaczego GHCi podaje poniżej nieprawidłową odpowiedź? GHCi λ> ((-20.24373193905347)^12)^2 - ((-20.24373193905347)^24) 4.503599627370496e15 Python3 >>> ((-20.24373193905347)**12)**2 - ((-20.24373193905347)**24) 0.0 AKTUALIZACJA Zaimplementowałbym funkcję Haskella (^) w następujący sposób. powerXY :: Double -> Int -> Double powerXY x 0 = 1 powerXY x y | y < 0 = powerXY (1/x) (-y) | …

1
Jakie są zasady oceny funkcji a -> () w Haskell?
Tak jak w tytule: jakie są gwarancje, że jednostka zwrotna funkcji Haskell zostanie poddana ocenie? Można by pomyśleć, że w takim przypadku nie ma potrzeby przeprowadzania żadnej oceny, kompilator mógłby zastąpić wszystkie takie wywołania natychmiastową ()wartością, chyba że istnieją wyraźne żądania zachowania ścisłości, w którym to przypadku kod może zdecydować, …

1
Jak faktoryzować monadę kontynuacji w lewy i prawy punkt pośredni?
Ponieważ monada stanu może być podzielona na produkt (lewy - Functor) i czytnik (prawy - reprezentowalny). Czy istnieje sposób na uwzględnienie Monady kontynuacji? Poniżej kodu jest moja próba, która nie sprawdza typu -- To form a -> (a -> k) -> k {-# LANGUAGE MultiParamTypeClasses, TypeOperators, InstanceSigs, TypeSynonymInstances #-} type …

1
Używaj Haskell jak modułów Preludium w module w raku
Piszę pakiet rysunków z niektórymi częściami, a operatorzy i typy danych są rozproszone po całej. Jednak nie chcę, aby użytkownicy dodawali odpowiednie moduły za każdym razem, ponieważ byłoby to dość bałagan, na przykład miałbym Pointklasę, Monoidrolę i Styleklasę na różnych ścieżkach, takich jak ten unit module Package::Data::Monoid; # $?FILE = …
11 haskell  raku 

1
Pisz role i mylące zachowanie przez „przymus”
Mam typ Id ai staram się zapobiec przypadkowemu Zmuszanie, np Id Doubledo Id Int. Jeśli dobrze rozumiem role typu, poniższe nie powinny się kompilować. {-# LANGUAGE RoleAnnotations #-} import Data.Coerce (coerce) type role Id nominal newtype Id a = Id String badKey :: Id Int badKey = coerce (Id "I …
11 haskell  roles  coerce 

2
Sumowanie list dowolnych poziomów zagnieżdżenia w F #
Próbuję utworzyć funkcję F #, która zwróci sumę listy ints dowolnego zagnieżdżenia. To znaczy. będzie działać dla a list<int>, a list<list<int>>i a list<list<list<list<list<list<int>>>>>>. W Haskell napisałbym coś takiego: class HasSum a where getSum :: a -> Integer instance HasSum Integer where getSum = id instance HasSum a => HasSum [a] …
10 haskell  f# 

2
Wyjaśnienie dotyczące rodzajów egzystencjalnych w Haskell
Usiłuję zrozumieć typy egzystencjalne w Haskell i natknąłem się na plik PDF http://www.ii.uni.wroc.pl/~dabi/courses/ZPF15/rlasocha/prezentacja.pdf Popraw moje poniższe rozumienie, które mam do tej pory. Typy egzystencjalne nie wydają się być zainteresowane zawartym w nich typem, ale dopasowanie do nich wzoru mówi, że istnieje jakiś typ, którego nie wiemy, dopóki nie użyjemy Typeable …


1
Dlaczego funkcja nawiasów Haskella działa w plikach wykonywalnych, ale nie jest czyszczona w testach?
Widzę bardzo dziwne zachowanie, w którym bracketfunkcja Haskella zachowuje się różnie, w zależności od tego, stack runczy stack testjest używana. Rozważ następujący kod, w którym dwa zagnieżdżone nawiasy klamrowe są używane do tworzenia i czyszczenia kontenerów Docker: module Main where import Control.Concurrent import Control.Exception import System.Process main :: IO () …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.