[Haskell-cafe] ANN: data-category, restricted categories
dave at zednenem.com
Fri Mar 26 11:25:56 EDT 2010
On Fri, Mar 26, 2010 at 11:07 AM, Edward Kmett <ekmett at gmail.com> wrote:
> On Fri, Mar 26, 2010 at 11:04 AM, Edward Kmett <ekmett at gmail.com> wrote:
>> -- as long as you're ignoring 'seq'
>> terminateSeq :: a -> Unit
>> terminateSeq a = a `seq` unit
> Er ignore that language about seq. a `seq` unit is either another bottom or
> undefined, so there remains one canonical morphism even in the presence of
> seq (ignoring unsafePerformIO) =)
It all depends on how you define equality for functions. If you mean
indistinguishable in contexts which may involve seq, then there are at
least two values of type Unit -> ().
foo :: (Unit -> ()) -> ()
foo x = x `seq` ()
foo terminate = ()
foo undefined = undefined
Even this uses the convention that undefined = error "whatever" =
loop, which isn't technically true, since you can use exception
handling to write code which treats them differently.
Dave Menendez <dave at zednenem.com>
More information about the Haskell-Cafe