{-# LANGUAGE ScopedTypeVariables #-}
module Main where
import Control.Applicative ((<$>))
import Data.ByteString (ByteString)
import qualified Data.ByteString as B
import qualified Data.ByteString.Char8 as C
import qualified Data.Vector.Unboxed as V
import qualified Data.Vector as VB
import qualified Data.List as L
(|>) :: a -> (a -> b) -> b
x |> f = f x
main :: IO()
main =
let
parse (s :: ByteString) = s |> L.unfoldr (C.readInt . C.dropWhile (== ' '))
solve (l :: Int) (ars :: VB.Vector ByteString) =
let
(n :: V.Vector (Int, Int)) = V.fromList [(x,y) | x <- [0..l-1], y <- [x+1..l-1]]
in
n
in do
[n,l :: Int] <- parse <$> B.getLine
(ars :: VB.Vector ByteString) <- VB.replicateM n B.getLine
ars
|> solve l
|> print
コンパイラはl
が何らかの理由で有効範囲に含まれていないと訴えています。何故ですか?私はちょうどScopedTypeVariables
拡張子が何を考え出したのでハスケルでは、この例では|>演算子が範囲外のエラーを出すのはなぜですか?
Not in scope: `l'
また、コードはそのように見える理由があります。それは適切な言語で、初心者のチュートリアルでなければなりません。私は過去数週間に渡って痛みを救ったでしょう。
。あなたがテストしている実際のプログラムとコンパイラのエラーを正確に伝えることができますか? – pdexter
申し訳ありません。私は例を編集して、エラーがトリガするようにしました。また、 'ars |> solve l |> print'を1行に書くと、この例がうまくいくようです。 –
たとえば、まだインポートが行方不明です。 – pdexter