Не определено на уровне типа

Часто, когда я играю с кодом на Haskell, я заглушаю все с помощью аннотации типа иundefined.

foo :: String -> Int
foo = undefined

Есть ли уровень неопределенности, который я мог бы использовать подобным образом?

(В идеале в сочетании с доброй аннотацией)

type Foo :: * -> *
type Foo = Undefined

Дальнейшее размышление о том же потоке: есть ли способ для меня заглушить экземпляры классов типов для типов, созданных таким образом? Еще более простой способ, чем следующий теоретический путь?

instance Monad Foo where
  return = undefined
  (>>=) = undefined

Ответы на вопрос(2)

Ваш ответ на вопрос