I've got this example from the Internet
import Data.List
import Data.Maybe
firstFactorOf x
| m == Nothing = x
| otherwise = fromJust m
where m =(find p [2..x-1])
p y = mod x y == 0
and this as a crude return the nth element of a list
import Data.List
import Data.Maybe
-- myIndex :: [a] -> Int -> Maybe a
myIndex [] _ = Nothing
myIndex (x:xs) 0 = Just x
myIndex (x:xs) n = myIndex xs (n-1)
I would like the Just x in the second block to actually be fromJust x as in the first block, i.e., I want a number returned, not a Just typed object. I've tried changing Just x to fromJust x but get the error when I try to use it
> myIndex [1,2,3,4,5] 3
* Non type-variable argument
: in the constraint: Num (Maybe (Maybe a))
: (Use FlexibleContexts to permit this)
: * When checking the inferred type
: it :: forall a. Num (Maybe (Maybe a)) => Maybe a
What am I missing here? Also, my type declaration seems to be wrong too, but I don't see why.
LB