Часто, когда я играю с кодом Haskell, я закрываю вещи аннотацией типа и undefined
.Не определено на уровне уровня
foo :: String -> Int
foo = undefined
Есть ли «неопределенный» тип уровня, который я мог бы использовать аналогичным образом?
(В идеале, в сочетании с доброй аннотацией)
type Foo :: * -> *
type Foo = Undefined
Далее мысль о том же потоке: есть ли способ для меня, чтобы погасить окурок экземпляров для класса типов типов, созданных таким образом? Еще проще, чем следующий теоретический путь?
instance Monad Foo where
return = undefined
(>>=) = undefined
Ницца! Именно то, что я искал; это еще более удобно, потому что вам не нужно писать 'Foo = Undefined'! И добрые подписи! Awesomesauce. –
Я считаю, что это не то же самое, что псевдоним типа - когда вы вводите новые данные, нет никаких шансов, что 'Foo a = a'. Таким образом, это не то же самое, что код вопроса, и это может быть хорошо. – gatoatigrado
@gatoatigrado: Я думаю, что это требование было просто заполнителем для типа, который еще не написан, а не как псевдоним типа per se, а затем это подходящее решение. В любом случае, рад помочь вам Дэн! – danr