Chatting with Andres Löh, I wondered: Is the following pointed-set monad useful, besides for analyzing focus in natural language (Rooth 1985, 1996)?
data Pointed a = Pointed a [a] deriving (Eq, Ord, Show, Read) toList (Pointed x xs) = x:xs instance Monad Pointed where return x = Pointed x  Pointed x xs >>= k = Pointed y (ys ++ (xs >>= toList.k)) where Pointed y ys = k x
Here is an example of use:
*Main> Pointed 3  >>= \x -> Pointed x [x*10,x*20] Pointed 3 [30,60,4,40,80]
Ok, I know, I should put it on Hackage. Is there a corresponding monad transformer?
Rooth, Mats. 1985. Association with focus. Ph.D. thesis, Department of Linguistics, University of Massachusetts.
Rooth, Mats. 1996. Focus. In The handbook of contemporary semantic theory, ed. Shalom Lappin, 271–297. Oxford: Blackwell.