[Haskell-cafe] ANN: data-category, restricted categories

David Menendez 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>
<http://www.eyrie.org/~zednenem/>


More information about the Haskell-Cafe mailing list