[<<][meta_siso][>>][..]
Thu Aug 13 14:45:10 EDT 2015

Not getting it


I keep running into functions like:

   i -> m o

Where m really is just [] or Stream, but I can't have the semantics of
the List monad (= flattening).

In the language, m really just expresses:
- compilability (representability)
- sharing (or strictness)



There are two monads I'm confusing:

- One just does sharing (scalar)
- The other implements the sequence semantics


This is especially clear in:

class Monad m => StateFold m s where
  stateFold :: s -> (s -> m (s, t)) -> m t


The first m is the 'scalar' monad.  The other is a representation of a
sequence.  Maybe this should be made into:

class (Monad m, Applicative m) => StateFold m a s where
  stateFold :: s -> (s -> m (s, t)) -> m (a t)

where a captures the sequence part.

No.


What StateFold expresses is not really a fold.  It expresses that we
are part of a context that expresses that the state can be ignored
locally.

It actually means something like:

Take this initial value and scalar function and abstract away the time
component such that we can focus on composing and sharing the current
values.

Smells like comonad?



Another vaguification:

You know, this got an s that you can't touch, but hey just take it off
with this here.




[Reply][About]
[<<][meta_siso][>>][..]