Jakie masz ogólne wskazówki na temat gry w golfa w Haskell? Szukam pomysłów, które można by zastosować do problemów z golfem w kodzie, które są przynajmniej nieco specyficzne dla Haskell. Proszę zamieścić tylko jedną wskazówkę na odpowiedź. Jeśli dopiero zaczynasz grę w golfa w Haskell, zapoznaj się z Przewodnikiem po …
W Haskell notacja listy: [a,b,c] Jest tylko cukrem syntaktycznym dla: a:b:c:[] A notacja ciągów: "abc" Jest tylko cukrem syntaktycznym dla: ['a','b','c'] Oznacza to, że ciąg: "abc" Jest taki sam jak: 'a':'b':'c':[] Zadanie Biorąc pod uwagę ciąg znaków, powinieneś wypisać, jak wyglądałaby wersja bez składni w Haskell. Zasady Otrzymasz ciąg dowolną …
Ostatnio miałem przyjemność napisać program Haskell, który mógłby wykryć, czy NegativeLiteralsrozszerzenie jest włączone. Wymyśliłem następujące: data B=B{u::Integer} instance Num B where{fromInteger=B;negate _=B 1} main=print$1==u(-1) Wypróbuj online! Zostanie wydrukowany Truenormalnie i Falseinaczej. Teraz miałem tyle radości, robiąc to, że rozszerzam wyzwanie na was wszystkich. Jakie inne rozszerzenia języka Haskell możesz złamać? …
Haskell ma krotki, które można zapisać jako (a,b,c) Jest to jednak tylko cukier syntaktyczny (,,)a b c Ogólnie przyjętą n krotka mogą być utworzone z n-1 , S pomiędzy (... )następnie jego elementów oddzielonych przestrzeni. Na przykład 7-krotkę (1,2,3,4,5,6,7)można utworzyć przez (,,,,,,)1 2 3 4 5 6 7 Ponieważ Haskell …
Podczas testu dostałem następujące pytanie: Napisz funkcję fo następującym typie a -> b -> (a -> b). ai bnie powinien być w żaden sposób związany, im krótszy kod, tym lepiej. Wymyśliłem f a b = \x -> snd ([a,x],b). Czy możesz znaleźć coś mniejszego? Obecnie zwycięzcą jest: f _=(.f).const
Jaki jest najkrótszy sposób na wyrażenie funkcji f(a,b)(c,d)=(a+c,b+d) w notacji bez punktów? pointfree.io daje nam uncurry (flip flip snd . (ap .) . flip flip fst . ((.) .) . (. (+)) . flip . (((.) . (,)) .) . (+)) które przy odrobinie pracy można skrócić uncurry$(`flip`snd).((<*>).).(`flip`fst).((.).).(.(+)).flip.(((.).(,)).).(+) dla 76 …
Definicja : potęga pierwsza jest liczbą naturalną, którą można wyrazić w postaci p n, gdzie p jest liczbą pierwszą, a n jest liczbą naturalną. Zadanie : Biorąc pod uwagę siłę pierwszą p n > 1, zwróć liczbę pierwszą p. Przypadki testowe : input output 9 3 16 2 343 7 …
Często zadanie wymaga prawdziwych tablic. Weźmy na przykład zadanie zaimplementowania Befunge lub> <>. Próbowałem do tego użyć Arraymodułu, ale jest to bardzo kłopotliwe, ponieważ wydaje mi się, że koduję o wiele za bardzo. Czy ktoś może mi pomóc w rozwiązywaniu takich zadań związanych z golfem mniej gadatliwym i bardziej funkcjonalnym?
Wyzwanie W tym zadaniu otrzymasz liczbę całkowitą N (mniejszą niż 10 ^ 5), wypisz sekwencję Farey rzędu N. Wejście N jest podane w jednym wierszu, wejścia są zakończone przez EOF. Wejście 4 3 1 2 Wynik F4 = {0/1, 1/4, 1/3, 1/2, 2/3, 3/4, 1/1} F3 = {0/1, 1/3, 1/2, …
Mało znanym faktem jest to, że jeśli włączysz wystarczającą liczbę rozszerzeń języka (ghc), Haskell stanie się dynamicznie pisanym językiem interpretowanym! Na przykład poniższy program implementuje dodawanie. {-# Language MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, UndecidableInstances #-} data Zero data Succ a class Add a b c | a b -> c instance Add …
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.