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.
Czytałem Real World Haskell i zbliżam się do końca, ale kwestia stylu mnie dręczy z operatorami (.)i ($). Kiedy piszesz funkcję będącą kompozycją innych funkcji, piszesz ją tak: f = g . h Ale kiedy zastosujesz coś na końcu tych funkcji, piszę to w ten sposób: k = a $ …
Zależne typy metod, które wcześniej były funkcją eksperymentalną, zostały teraz domyślnie włączone w linii głównej i najwyraźniej wywołało to pewne podekscytowanie w społeczności Scala. Na pierwszy rzut oka nie jest od razu oczywiste, do czego może to być przydatne. Heiko Seeberger napisali prosty przykład zależnych rodzaju metody tutaj , które, …
Natknąłem się na fragment kodu Haskella, który wygląda następująco: ps@(p:pt) Co ten @symbol oznacza w tym kontekście? Nie mogę znaleźć żadnych informacji w Google (niestety trudno jest znaleźć symbole w Google) i nie mogę znaleźć funkcji w dokumentacji Prelude, więc wyobrażam sobie, że zamiast tego musi to być jakiś cukier …
Nawet banalnie małe programy Haskell zamieniają się w gigantyczne pliki wykonywalne. Napisałem mały program, który został skompilowany (z GHC) do pliku binarnego o rozmiarze do 7 MB! Co może spowodować, że nawet mały program Haskell zostanie skompilowany do ogromnego pliku binarnego? Co, jeśli cokolwiek, mogę zrobić, aby to zmniejszyć?
Bardzo łatwo jest przedstawić drzewo lub listę w haskell przy użyciu algebraicznych typów danych. Ale jak zabrałbyś się do typograficznego przedstawienia wykresu? Wygląda na to, że potrzebujesz wskazówek. Domyślam się, że możesz mieć coś takiego type Nodetag = String type Neighbours = [Nodetag] data Node a = Node a Nodetag …
Mam dziwne zachowanie z odpowiedzią Interactive-Haskell w emacs. Kiedy pobieram plik, emacsmini-bufor wyświetla serię interaktywnych monitów: Start a new project named 'myproject'? Cabal dir (guessed from myproject.cabal): Build target (empty for default): Set current directory: Jeśli pozostawię katalog cabal lub katalog bieżący z domyślną wartością katalogu projektu, replik nie odpowiada. …
Jak mogę znaleźć rzeczywistą ilość pamięci wymaganej do przechowywania wartości pewnego typu danych w Haskell (głównie z GHC)? Czy można to ocenić w czasie wykonywania (np. W GHCi), czy też można oszacować zapotrzebowanie na pamięć złożonego typu danych na podstawie jego komponentów? Ogólnie rzecz biorąc, jeśli znane są wymagania dotyczące …
Kod funkcji myAny w tym pytaniu używa foldr. Przestaje przetwarzać nieskończoną listę, gdy predykat jest spełniony. Przepisałem to używając foldl: myAny :: (a -> Bool) -> [a] -> Bool myAny p list = foldl step False list where step acc item = p item || acc (Zwróć uwagę, że argumenty …
Uczę się Haskella z learnyouahaskell.com . Mam problem ze zrozumieniem konstruktorów typów i konstruktorów danych. Na przykład tak naprawdę nie rozumiem różnicy między tym: data Car = Car { company :: String , model :: String , year :: Int } deriving (Show) i to: data Car a b c …
Monada czytelnicza jest tak złożona i wydaje się bezużyteczna. W języku imperatywnym, takim jak Java czy C ++, nie ma odpowiednika koncepcji monady czytelnika, jeśli się nie mylę. Czy możesz podać mi prosty przykład i trochę to wyjaśnić?
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ć …
Od dawna zastanawiałem się, dlaczego leniwa ocena jest przydatna. Nikt jeszcze nie wyjaśnił mi w sposób, który miałby sens; przeważnie kończy się to „zaufaniem mi”. Uwaga: nie mam na myśli zapamiętywania.
Powiedzmy, że mam następujący rekord ADT: data Foo = Bar { a :: Integer, b :: String, c :: String } Chcę funkcji, która pobiera rekord i zwraca rekord (tego samego typu), w którym wszystkie pola oprócz jednego mają identyczne wartości, jak te przekazane jako argument, na przykład: walkDuck x …
Jestem ciekaw, dlaczego implementacje Haskell używają GC. Nie przychodzi mi do głowy przypadek, w którym GC byłaby konieczna w czystym języku. Czy jest to tylko optymalizacja w celu ograniczenia kopiowania, czy rzeczywiście jest to konieczne? Szukam na przykład kodu, który przeciekałby, gdyby nie było GC.
Przeszukałem internet w poszukiwaniu rzeczywistego wyjaśnienia tego, co robi to słowo kluczowe. Każdy samouczek Haskell, na który patrzyłem, zaczyna go używać losowo i nigdy nie wyjaśnia, do czego służy (a widziałem wiele). Oto podstawowy fragment kodu z Real World Haskell, który używa Just. Rozumiem, co robi kod, ale nie rozumiem, …
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.