Если у меня есть функция, которая возвращает IO Bool
(в частности, atomically
), есть ли способ использовать возвращаемое значение непосредственно в операторе if
без привязки?
Итак, в настоящее время у меня есть
ok <- atomically $ do
...
if (ok) then do
...
else do
...
Можно ли вообще написать это как-то вроде
if (*some_operator_here* atomically $ do
...) then do
...
else do
...
Я надеялся, что будет использовать анонимно что-то вроде <-
, т.е. if (<- atomically ...)
, но до сих пор нет такой удачи.
Аналогично, на getLine, можно ли написать что-то вроде
if ((*operator* getLine) == "1234") then do ...
Связанное дополнение - каков тип (<-)
? Я не могу заставить его появиться в ghci. Я предполагаю, что это m a -> a
, но тогда это означало бы, что его можно было бы использовать вне монады, чтобы избежать этой монады, которая была бы небезопасной, верно? Является ли (<-)
не функцией вообще?