[Haskell-beginners] why is ScopedTypeVariables not fixing this error?

Dennis Raddle dennis.raddle at gmail.com
Tue Oct 9 08:45:18 UTC 2018


In the following snippet from a program in progress (designed to compute
percentile rank for arbitrary lists of values) , I was hoping to declare
types of functions within the main function just as a way of helping myself
catch type errors. I'm getting the error "Can't match 'a' with 'a1'....
where 'a' is rigid type variable... etc. etc." on the line indicated in the
comment below. The usual error I get when I try to do this without
ScopedTypeVariables. So, I thought that ScopedTypeVariables was supposed to
allow this kind of usage. What am I doing wrong?


{-# LANGUAGE ScopedTypeVariables #-}

import qualified Data.Map as M
import qualified Data.List as L
import Data.Map(Map)
import Data.Function

-- <percent at or below> <percent below>
data PercentileData = PercentileData Double Double

-- new attempt, October 2018: using new PercentileData construct to
-- represent percentile in both ways. (at/below, or below)
computePercentile :: Ord a => Map a Double -> Map a PercentileData
computePercentile dataIn = error "foo"
  where
    pairs :: [(a,Double)]  -- THIS IS THE LINE GETTING THE ERROR
    pairs = L.sortBy (compare `on` snd) $ M.toList dataIn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20181009/43a118c2/attachment.html>


More information about the Beginners mailing list