----- unpack :: Dynamic -> Maybe a unpack (x :: a^) = Just x unpack (f :: A.a: Int -> Maybe a) = Just (f 37) unpack _ = Nothing ----- funcname unpack whitespace punctuation :: whitespace type Dynamic whitespace punctuation -> whitespace type Maybe whitespace typevar a whitespace \n funcname unpack whitespace punctuation ( argument x whitespace punctuation :: whitespace typevar a punctuation ^) whitespace punctuation = whitespace constructor Just whitespace argumentinrhs x whitespace \n funcname unpack whitespace punctuation ( argument f whitespace punctuation :: whitespace existential A punctuation . typevar a punctuation : whitespace type Int whitespace punctuation -> whitespace type Maybe whitespace typevar a punctuation ) whitespace punctuation = whitespace constructor Just whitespace punctuation ( argumentinrhs f whitespace literal literal-int literal-int-dec 37 punctuation ) whitespace \n funcname unpack whitespace argument _ whitespace punctuation = whitespace constructor Nothing