{-# LANGUAGE DatatypeContexts #-} -- !!! Selectors for data and newtypes with contexts -- This program, reported in Aug'00 by Jose Emilio Labra Gayo -- gave rise to a Lint error because the selector 'newout' below -- was given the type -- Eq f => NewT f -> f -- but lacked a dictionary argument in its body. module Main where newtype (Eq f) => NewT f = NewIn { newout :: f } data (Eq f) => DataT f = DataIn { dataout :: f } main = print (newout (NewIn "ok new") ++ dataout (DataIn " ok data"))