Last language I really learned was either C or Python, though the timelines are sort of interleaved, so it’s a bit tricky to give a definitive answer on which is the “last” language I learned.
Currently I’m not really learning any language, but I want to learn Haskell, though most resources are sort of… bad. I want to get the prerelease of @bitemyapp’s Haskell Programming book, but sadly I’m currently unemployed and can’t afford it.
but sadly I’m currently unemployed and can’t afford it.
Send me an email to the one on my Github profile.
It’s true, resources are wanting. Have you looked at this page?
If having used a language in anger means you have learned it, then I have learned Haskell. But when I look at blogs like ezyang’s and dons' I get the impression I haven’t learned much. Learning Haskell is like removing a veil just to find another veil. I’ve got some C projects lined up at work and look forward to re-learning. I was once the guy who was asked by his C instructor to give a lecture on a particular assignment, but that was a long time ago and I’ve never used it in anger. I aspire to learn idris and rust. They’re like Reese’s Peanut Butter Cups. Two great tastes that taste great together (probably).
Are you waiting for later chapters? It’s 912 pages and pretty comprehensive already. We do edit earlier material, but people are getting a fair bit of mileage out of it now.
We outline what is currently available and coming up in the book here: http://haskellbook.com/progress.html
Not trying to pressure, just like to get a sense of what people believe they want out of the book.
What I would like is how to recognize that what I have fits a particular typeclass. How do I know the data structure + functions I have for it is a monad, or an applicative, or a functor. Put another way, how do I apply the implications of monads, functors, applicatives, etc?
That’s of the current MFAM (Monoid/Functor/Applicative/Monad) sequence as well as the material preceding it. There’s an abstract structures applied chapter after the Monad chapter as well. I would be surprised if you didn’t feel more comfortable determining this after reading the book. Try not to skip around too much though, it’s a cumulative method and the exercises are a big part of it.
ix, my dopewars clone, compiles and does stuff. Mostly eat up memory. I think I know why and will be looking into it this week.
After 15 years on Linux I could not take it anymore and have started to migrate to OpenBSD: http://git.uggedal.com/obsdenv/tree/
Could you talk about what you love? I have actually considered doing what you have. I love Debian, but want to try BSD as well and see the differences.
pkg) has been a very simple, yet powerful tool that I’ve gotten used to over the last few weeksI would be using NetBSD right now, save for the fact that ghc isn’t stable, the haskell ecosystem is terrible. Now that I think about it, I could probably just run linux VMs on a simple and secure NetBSD host.
Still upgrading to reactive-banana 1.0.0. Shift from union to unionWith is complete. The type change of accumB and friends is current pain. I’m sure the solution is easy and I’m probably making it harder than it has to be.
Well … the library that my tradewars clone is centered around reactive-banana, just had a redesign. I decided that I would take the project as far as I could with the 0.9 version, but my inclusion of conduits has compelled me to stop working with 0.9 and just move over to 1.0. The problems I am experiencing are centered around the new requirement of having to be explicit about what happens when two events happen at the same time. Re-writing. All. The. Things.
I’ve introduced conduits into my tradewars clone. This has led to a refactoring task I’m in the middle of this week. No more Lists, we use Maps now. Like big boys. Bytestring instead of Text in some places. Hooray for a modern type system that is on my side! Makes the task so much easier.
I uploaded an alpha of my dopewars clone ix, last week. https://github.com/mlitchard/ix
current task is updating the server to use json and conduits.
This is great stuff. I think I may have a space leak in my game. I’ll use this technique to find out.
I use function/action signatures combines with type names to minimize the amount of comments I have to include.
so instead of makeOffer :: Int -> Int -> Either ErrReport Acquired I’d do makeOffer :: Amount -> Price -> Either ErrReport Acquired
where both Amount,Price and Acquired are type synonyms for
newtype PInt = PInt Int which has it’s own (abused) typeclass enforcing truncated subtraction and a smart constructor assuring conversion from Int to PInt always results in a non-negative. I believe the code for this is self-documenting.
I’m sorting out a re-factoring of a dopewars clone I’m making. The old code is on github, will be posting the new stuff by Thursday methinks. https://github.com/mlitchard/emporos/tree/master
Doing a section of a re-write of an incomplete game. Specifically I’m attempting to encode some game rules at the type level. I’ve been advised by people with more sober judgment to not do that. Meh, doing it anyway. Maybe I’ll have a nice war story about why it was a bad idea.
I’m working on a re-write of an incomplete game based on trade wars, while time is available. https://github.com/mlitchard/emporos I ran into some surprising bugs the first time around, so this time I will use Travis and quickcheck this time. Also, ghc has some cool newish features that I believe will help me encode game rules at the type level. This goes against the sober judgment of others, but I’m doing it anyway.
The semicolon is alive and strong, with amazing superpowers: being programmable
semicolon is technically programmable in C++ with the use of destructors ;-)