Код выше просто становится

оложим, в 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

]

(Этот вопрос по сути такой же, какГруппировка функций в Хаскеле но там я использовал несколько неудачных слов, которые отвлекали людей.)

Ответы на вопрос(2)

Ваш ответ на вопрос