Open ekmett opened 12 years ago
Are there any more examples somewhere? Just the most basic things would make a lot of difference.
Paul Chiusano And Runar Bjarnason have written a number of examples for the scala version of machines. the Haskell version has yet to pick up nice examples admittedly, but most of them should transcode cleanly.
Actually I'm interested in the F# version, but I will accept examples in any language ;). I have tried googling, but my fu is not with me today...
My first reaction: "There's an F# version?" ;)
There should be a link to @runarorama 's slides in the README. @pchiusano gave a talk at NEScala 2013 that is also relevant and IIRC was recorded.
@ekmett I have already read the slides; but they seem to just be a type declaration per slide. It was probably easier to follow with speech attached.
The F# version is done by @pocketberserker. =)
I was also able to locate a few of your gists with more type declarations in them, and the wikipedia entry on Mealy machines...
My aim is to use machines to read data from the network into record type, from a given binary format. I want to have one step that does the read :: unit -> async<chunk>
(because the CLR maps that to aio / IO Completion ports), and another step that yields when we have sizeof<FetchRequestPartitionData> / sizeof<chunk>
chunks as a FetchResponsePartitionData
.
But I'm at a loss on how to get started.
fwiw, the lack of documentation was also show stopper for me. The current level of docs assume someone very well versed in haskell and underlying patterns.
The current state of the documentation is very much an artifact of machines being a work-in-progress, while we try to find a better point in the design space, than a finished product.
Fair enough. I find them very interesting anyway! :+1:
If someone knows how to explain their current implementation I'd be all ears; e.g. if that presentation video can be found somewhere...
http://m.youtube.com/#/watch?v=8fC2V9HX_m8&desktop_uri=%2Fwatch%3Fv%3D8fC2V9HX_m8 is the link for me, but I'm on my iPad, YMMV.
Link doesn't work... Has there been any documentation efforts the last 8 months?
I'll try to take a whack at it in the new year. I have a fork full of all kinds of experiments which I need to pare down. My large code base that depends on it needs a refactoring, so I'll see what parts of machines I'm using at that point, and fill in the documentation then.
@haf pretty much nothing.
@acowley has been going nuts in his own (not-so) little fork.
We need to figure out how much of that makes sense to merge in, and how much can be handled as an add-on library.
For the moment I would be happy with a longer list of links for the underlying concepts. I tried going to the hackage page for this library and clicking through to the documentation for all the type classes that are being used (Arrow, Category, Profunctor and so on), but that search is not very directed.
I understand the core concept that you create a machine which is a deferred execution plan which you can later run. I understand the above concepts are useful for composing and constructing the machines. What I don't get is the very starting point, the most basic concepts that can be used without all the other 'features' by the side.
@haf This seems to be the talk hinted above: http://functionaltalks.org/2013/08/25/paul-chiusano-advanced-stream-processing-in-scala/
For what it worth, I find the documentation 'good enough'. Having examples is a different matter
We have haddock coverage now. Examples would help, though.