W jednym ze sposobów rozwiązania problemu używa się "Dot Hack". Połączona strona Github nie jest już dostępna i nie mogę znaleźć nic na jej temat.Haskell "Dot Hack"
O co chodzi? Co to robi? W jaki sposób?
W jednym ze sposobów rozwiązania problemu używa się "Dot Hack". Połączona strona Github nie jest już dostępna i nie mogę znaleźć nic na jej temat.Haskell "Dot Hack"
O co chodzi? Co to robi? W jaki sposób?
Chyba on odnosząc się do następującej linii:
import Prelude hiding ((.))
który wyłącza normalne (.)
operator dla kompozycji funkcjonalnej. Zamiast tego używany jest inny operator o tej samej nazwie, prawdopodobnie importowany z modułu narzędziowego T.T
. Ten operator zachowuje się w językach OOP:
pretty_output solution = solution.elems.map(show).in_group_of(9)
.map(unwords).unlines
który (chyba) normalnie wyglądać
pretty_output solution = (unlines . map unwords . in_group_of 9 . map show . elems) solution
że operator ten działa tak samo jak operator |>
w F #:
(|>) :: a -> (a -> b) -> b
x |> f = f x
który jest używany do rurki wartość przez funkcje (i jest bardziej czytelny i lepiej funkcjonalny styl, imo):
pretty_output solution = solution |> elems |> map show |> in_group_of 9 |> map unwords |> unlines
(|>)
jest również taki sam jak flip ($)
.
Edytuj: Ten "zhakowany" operator już istnieje w Haskell. To samo zachowanie kompozycja może być osiągnięty przez operatora składu lewej do prawej, od Control.Category
: tylko
g x = x |> (f1 >>> f2 >>> f3)
Te rury funkcje, choć i to właściwie tylko f >>> g = g . f
.
Możesz również przeczytać [this] (http://stackoverflow.com/q/1457140/1346276), traktując niektóre problemy z obiema wersjami. – phg
To użyciem stylu OOP
thing.method
wywołać funkcje na thing
zamiast zwykłej
method thing
Patrz np
row i = i `div` 9
col i = i `mod` 9
row_list i positions = positions.select(on_i_row) where
on_i_row pos = pos.row == i.row
col_list i positions = positions.select(on_i_col) where
on_i_col pos = pos.col == i.col
w tym programie.
Zastanawiam się, czy jest to związane z serią .hack. – Pubby