Re[22]: Всё является функцией на Хаскеле?
От: SolVolkov  
Дата: 16.08.10 18:52
Оценка:
SV>
SV>f :: Monad m => m Int
SV>f = return 1

SV>g1 :: IO Int
SV>g1 = do
SV>  a <- f
SV>  return $ a + 1

SV>g2 :: [Int]
SV>g2 = do
SV>  a <- f
SV>  return $ a + 1
SV>


SV>f -- это действие или нет? Исходя из твоего определения -- нет (поскольку тип не IO t, а Monad m => m t). Но по месту применения выглядит то как действие (в g1), то как значение (в g2). Получается слишком запутано и бессмысленно.


Хм... Продолжая в том же духе
import Control.Applicative

f :: Applicative f => f Int
f = pure 1

g1 :: Maybe Int
g1 = f

g2 :: Int -> Int
g2 = f

Похоже, что понятия "функция" и "значение" в haskell вообще невозможно формально разделить. Этот haskell -- такой haskell
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.