Comments (8)
Thanks for the suggestions. Let me see.
Renaming Ch
-> Channel
might be a good thing as Channel
isn't that long of a name and can perhaps be pronounced more easily while reading code.
Alt
-> Alternative
starts to get a bit long for my personal taste—due to the use in several submodules, like IVar.Alt
and Promise.Alt
, and suffices like Promise.queueAsAlt
. The Occam language, for example, also uses the abbreviation alt
for a related concept, so in some sense the abbreviation is established. Alt
can already be pronounced easily without having to mentally extend the name. So, I'm reluctant to renaming Alt
to Alternative
.
Hopac has nothing named Actor
.
Cont
is very much an internal concept and I don't see value in renaming that. The only reason it is exposed at all is that F# + .Net makes it impossible to create really low overhead fully abstract types, and I really don't want to impose significant overhead by fully hiding everything (believe me, I've tried many variations and done extensive benchmarking and analysis of the machine code generated by the .Net runtime). If client code is directly using Cont
objects they are looking for problems.
I've been thinking about doing a one last pass over the interface of the library before pushing it to version 1.0.0. I'm mainly interested in seeing whether more extensive use of F#'s computation expressions could make Hopac programs look more like they were written in a genuine concurrent programming language. I think I'll make an experimental attempt at such a revised Hopac interface and also try to incorporate some of these naming suggestions to see which ones seem reasonable.
Again, thanks for the suggestions!
from hopac.
Main thing is it should be reasonable. I am new to the library. Also I have missed a few items also.
if something is not to be used in the client side please be explicit in the documentation and also perhaps add an attribute for additional precautions. Thanks again for considering this.
from hopac.
Also please do the same for the sister projects also.
from hopac.
Thanks for the suggestion—that is exactly how the documentation has already been written. There is exactly one document that mentions Cont
and that is Notes on the Internal Implementation of Hopac. The Hopac Library Reference does not document any internal primitives. Actor
is only mentioned in the document that compares Hopac to actor models and shows how you can achieve similar things with Hopac straightforwardly.
I assume you are not previously familiar with Concurrent ML? I seriously and highly recommend starting with John Reppy's book Concurrent Programming in ML. It is an excellent book and I can't recommend it highly enough. After that you can read Programming in Hopac and the reference manual to understand how Hopac differs from Concurrent ML.
from hopac.
Thanks for the pointers. Will do this.
from hopac.
Any other books you would recommend?
from hopac.
For understanding the main programming model of Hopac, John Reppy's book is what one needs.
Other book recommendations would depend on what you primarily want to achieve. For example, if you want to write programs that scale to multiple cores, then you need to understand how to structure basic parallel algorithms and a book like Structured Parallel Programming might be illustrative (though I personally found it could have used a bit of editing).
For more concurrent, asynchronous and distributed oriented programming you might want to read about how people structure Erlang programs (e.g. there is a book by Cesarini et al and another book by Armstrong et al). After one understands how to overall structure programs with lightweight threads (answer: as independent end-to-end processes), one can implement those patterns using the model offered by Hopac / Concurrent ML.
from hopac.
When you get used to it current naming is not that bad.
from hopac.
Related Issues (20)
- Add Azure DevOps build HOT 2
- Problems with network stream HOT 9
- Handling exceptions HOT 9
- Stack Overflow in Alt.choose HOT 3
- Fibonacci benchmark fails with Stack Overflow on NET Core, but not on Framework HOT 4
- Production Ready? HOT 5
- IAsyncEnumerable<T> interop HOT 1
- How to convert to task? HOT 6
- ValueTask<T> interop HOT 1
- How to get the build working on Windows? HOT 2
- Stack overflow with recursive job HOT 5
- Is this project dead? HOT 1
- Why do these two code snippets result in different behavior HOT 1
- FSharp.Core 5.0 support HOT 15
- Why does the left side not uncommit after the right side has been chosen when using Alt.prepare? HOT 8
- How can uncaught exception errors be redirected?
- BadImageFormatException HOT 6
- How to conCollect but stop on first exception? HOT 8
- System.Diagnostics.Activity doesn't flow properly with Hopac, resulting in incorrect telemetry correlation
- Example of paranoid function?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hopac.