Код выше просто становится
оложим, в Haskell у меня есть несколько функций, которые зависят от одного типа параметра:
f :: Par -> a -> b
g :: Par -> b -> c
Поскольку я пишу больше этих функций, которые все еще зависят от этого типа параметра, я могу сделать что-то вроде
h :: Par -> a -> c
h par = myg . myf
where myf = f par
myg = g par
Однако я продолжаю писатьwhere
линий. Вопрос в том, можно ли этого избежать?
[Редактировать: я попытался предоставить минимальный пример, чтобы проиллюстрировать проблему, но, видимо, пример слишком минимален, чтобы проиллюстрировать то, что я хочу. В актуальной проблеме h это, конечно, не просто композиция f и g. Итак, вот фактический код:
Есть функции
apply :: ChamberLattice -> ChLatword -> ChLatWord
reduce :: ChamberLattice -> ChLatWord -> ChLatWord
и я определяю функцию
chaseTurn :: ChamberLattice -> Turn -> Parity -> ChLatWord -> ChLatWord
chaseTurn cl Straight _ xs = xs
chaseTurn cl t parity xs = if ((turn parity xs) == t)
then case myApply xs of
(y1:y2:ys) -> (y1:y2:(myChaseTurn t parity ys))
ys -> ys
else myReduce xs
where myApply = apply cl
myChaseTurn = chaseTurn cl
myReduce = reduce cl
]
(Этот вопрос по сути такой же, какГруппировка функций в Хаскеле но там я использовал несколько неудачных слов, которые отвлекали людей.)