Size: a a a

2021 February 15

A

Aragaer in Haskell Start
+(3 :: Int)
источник

к

кана in Haskell Start
если правый аргумент Integer, то и левый, значит read спарсит в Integer
источник

A

Aragaer in Haskell Start
ага
источник

A

Aragaer in Haskell Start
ну это в частности объяснение, почему если вообще ничего, то все равно работает - 3 это какой-нибудь Num и ghc выбрал такой, какой ему нравится.
источник

A

Aragaer in Haskell Start
И никакого мата "а я не знаю, какой вам нужен read" - такой, какой выбран для 3
источник

T

The Lord of Hypercom... in Haskell Start
Так. Я понимаю, что неправ с применением read, но не понимаю, почему неправ.
источник

T

The Lord of Hypercom... in Haskell Start
шакал, но вроде видно
источник

к

кана in Haskell Start
getLine это IO String
read @Int <$> getLine это IO Int
источник

к

кана in Haskell Start
а функция lucky принимает Int, а не IO Int
источник

T

The Lord of Hypercom... in Haskell Start
Точнее, я не понимаю, как IO Int превратить в Int
Какую волшебную палочку для этого нужно использовать?
источник

к

кана in Haskell Start
1. <- в ду-нотации

do
 x <- read @Int <$> getLine
 putStrLn (lucky x)
источник

к

кана in Haskell Start
2. явно сделать бинд
(read @Int <$> getLine) >>= \x -> putStrLn (lucky x)

(первый вариант это сахар для второго)
источник

к

кана in Haskell Start
3. вариант что выше кидали, просто =<< вместо >>=

(\x -> putStrLn (lucky x)) =<< read @Int <$> getLine

и то же самое

putStrLn . lucky x =<< read @Int <$> getLine
источник

T

The Lord of Hypercom... in Haskell Start
кана
1. <- в ду-нотации

do
 x <- read @Int <$> getLine
 putStrLn (lucky x)
А чем этот хрен слаще той редьки?
источник

T

The Lord of Hypercom... in Haskell Start
Разницу вижу, но не осознаю
источник

к

кана in Haskell Start
той это какой?
источник

к

кана in Haskell Start
<- это не "присваивание", это в данном случае выполнить дейстие типа "IO Int"  и поместить в x результат типа Int
источник

T

The Lord of Hypercom... in Haskell Start
The Lord of Hypercomplex Numbers
Так. Я понимаю, что неправ с применением read, но не понимаю, почему неправ.
Ну
Если я правильно понял, то последняя строка аналогична чему-то типа
x = read @Int <$> getLine
putSTrLn $ lucky x

Или я снова неправ?
источник

к

кана in Haskell Start
можно всегда считать, что

g = do
 x <- y
 f x

это то же самое что и

g = y >>= \x -> f x
источник

к

кана in Haskell Start
The Lord of Hypercomplex Numbers
Ну
Если я правильно понял, то последняя строка аналогична чему-то типа
x = read @Int <$> getLine
putSTrLn $ lucky x

Или я снова неправ?
нет, аналогично твоему коду будет

do
 let x = read @Int <$> getLine
 putSTrLn $ lucky x

но тут x это все еще IO Int

нужно сделать

do
 let x = read @Int <$> getLine
 y <- x
 putSTrLn $ lucky y
источник