У меня есть функция, которая выглядит так:
sinkFocus :: StackSet i l a s sd -> Maybe (StackSet i l a s sd)
sinkFocus = (fmap . flip sink) <*> peek
Однако я хотел бы X ()
, чтобы я мог его использовать. Например, additionalKeys
использует X ()
.
В документации сказано, что X
является IO
с некоторыми преобразователями состояния и считывателя, поэтому у меня сложилось впечатление, что StackSet
содержится в состоянии X
. Таким образом, теоретически должна быть возможность изменить соответствующую часть состояния. Однако доступное состояние — это XState
, а не StackState
, которое я хочу, поэтому мне нужно иметь возможность превратить мою функцию на StackState
в функцию на XState
.
Это было бы достаточно просто, если бы у меня была функция типа
(StackSet i l a s sd -> StackSet i l a s sd) -> X ()
Однако, покопавшись в документации, я еще не смог собрать воедино способ сделать это. Есть ли способ взять функцию на StackSet
и сделать X ()
, который выполняет эту функцию?