Если у меня есть функция, которая возвращает 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, но тогда это означало бы, что его можно было бы использовать вне монады, чтобы избежать этой монады, которая была бы небезопасной, верно? Является ли (<-) не функцией вообще?