Very true. I oversimplified matters by mistake.

One question, I suppose, is does seq distinguish the arrows, or does it
distinguish the exponential objects in the category? since you are using it
as an object in order to apply seq, and does that distinction matter? I'd
hazard not, but its curious to me.

2010/3/26 David Menendez <d...@zednenem.com>

> On Fri, Mar 26, 2010 at 11:07 AM, Edward Kmett <ekm...@gmail.com> wrote:
> >
> > On Fri, Mar 26, 2010 at 11:04 AM, Edward Kmett <ekm...@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 <d...@zednenem.com>
> <http://www.eyrie.org/~zednenem/ <http://www.eyrie.org/%7Ezednenem/>>
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to