В главе «Функторы, аппликативные функторы и моноиды» в «Learn You A Haskell» Миран выполняет следующие действия:
ghci> (pure 3) "blah"
3
Я, однако, получаю это:
ghci> (pure 3) "blah"
<interactive>:1:2:
No instance for (Functor ((->) [Char]))
arising from a use of `pure'
Possible fix:
add an instance declaration for (Functor ((->) [Char]))
In the expression: (pure 3) "blah"
In an equation for `it': it = (pure 3) "blah"
Я не уверен, что случилось. Все примеры работали правильно до сих пор. Я не должен был что-то импортировать, но я не знаю что.
Вот моя информация о версии:
$ ghci -v
GHCi, version 7.0.4: http://www.haskell.org/ghc/ :? for help
Glasgow Haskell Compiler, Version 7.0.4, for Haskell 98, stage 2 booted by GHC version 6.12.3
Мой ~ / .ghc / ghci.conf выглядит так:
{-# LANGUAGE Arrows #-}
:set prompt "[32;1m%s[0m\n> "
import Control.Arrow
import Control.Monad (when, forever, forM, liftM)
import Control.Applicative
-- import Control.Applicative (ZipList (..), (<$>), (<*>), pure)
import Control.Exception (IOException (..), catch)
import qualified Data.ByteString as ByteString (pack, unpack)
import qualified Data.ByteString.Lazy as LazyByteString (cons, cons', empty, fromChunks, pack, readFile, unpack, writeFile)
import Data.Char (chr, ord, toUpper, toLower, isDigit)
import Data.Function (fix, on)
import Data.Functor
import Data.List (find, genericLength, intercalate, intersperse, nub, tails)
import Data.Map (Map (..))
import qualified Data.Map as Map (fromList, lookup)
import Data.Monoid (mempty, mappend, mconcat)
import Data.Tuple (fst, snd, curry, uncurry, swap)
import System.Console.ANSI (setCursorPosition, clearScreen)
import System.Directory (renameFile, doesFileExist)
import System.Environment (getArgs, getProgName)
import System.IO (IOMode (..), stdout, openFile, withFile, hGetContents, hClose, openTempFile, hPutStr, hFlush)
import System.IO.Error (isDoesNotExistError)
import System.Random (StdGen (..), RandomGen (..), Random (..), getStdGen, mkStdGen, newStdGen, random, randomR, randomRIO, randoms)
import Text.Printf (PrintfArg (..), printf)