319 karma · joined August 12, 2011
Which is too bad. Doctors do, but technologists arguably have a larger effect on the lives of all people.
Anyone think that's still a cool idea?
edit: it looks like there a are a bunch of CLI versions of this which I'm going to try out! But my big beef has always been going to a new computer and not wanting to call `curl thisorthat.sh` 50 times, and remember everything.
Sometimes people like to write about their pleasant experience before the project is completely finished. I'm bookmarking the project as a good example of Cabal Project structuring and use of some network libraries. Good examples like these aren't very well curated from the universal Haskell repertoire.
As far as the type systems go, it's been well established practice that you use a data interchange format. I thought Erlang used strings for its messages - surely Go can handle strings as well.
I don't think that you'd necessarily need to have both Erlang and Go running here - rather, this might be best for writing Go systems that 'act like' Erlang systems.
> Update your user profile.
Why is this required? I very much like my profile the way it is. What do you plan on adding? Is this just poor wording in the github auth API for something that really doesn't mean "change my email, location, and availability for hire?"
Inside job? Sounds like the type of "glitch" that was in Office Space.
But probably not (Hanlon)
So might that count as radio?
Seriously, push your templates, models, and controllers into static client code (html/js) and use any of the dead-simple Sinatra-like clones to quickly scaffold your REST resources. Go is a superb "plumbing" language, in my opinion.
https://www.hackerleague.org/hackathons/pennapps-fall-2012/h...
"Quantum teleportation is unrelated to the common term teleportation – it does not transport the system itself, and does not concern rearranging particles to copy the form of an object."
So, in a nutshell, scientists aren't always incredibly creative when conducting nomenclature. Although some people do find subatomic particles quite strange.
Fact is projects like that are pretty rare.
"What it does not have, according to city officials, are things that would make it an office. It doesn’t have enough fire exits, sprinklers or wheelchair-accessible bathrooms, as required by city regulations."
Whew, working backwards.
Fold is like your swiss army knife for working with entire lists at once; you just need to tell it what to do when it sees a node (Cons) or a terminator (Nil). If, for example, you instruct fold to apply a function to each element of the list but leave the linked structure intact, you've implemented map! And for lists, the fuctorial map, or fmap, is exactly map.
The monadic bind in the List monad is a way of expressing Nondeterminism. Let's say I have two functions...
b = makeSomeBsFromAnA(a); c = makeSomeCsFromAB(b);
In the context of the List Monad, you would evaluate the first statement to produce a list of Bs. Then, for each B, you would generate a list of Cs, and then concatenate all of those lists into a big list. That's why bind is sometimes referred to as flatmap in the List Monad - take each element generate in the last list computation to generate a bunch of new lists, and then flatten them (smoosh them together; concatenate them). flatmap could of course be implemented using fold and cons.The point here is that, since we're working within the context of the list monad, I can deal with a single B and a single C, even though the function calls are really giving back lists of those respective types.
By the way, in Haskell the code would really look like this
makeSomeCsFromAnA a = do
b <- makeSomeBsFromAnA a
makeSomeCsFromAB b doThingOne(); doThingTwo()
... you get to pick what happens during the semicolon depending on which Monad you happen to be working with.For example, like praptak mentioned, maybe during every semicolon you can evaluate the failure state of your program and decide not to continue. I.E., "Maybe" the execution worked, and "Maybe" I have a valid computation at this point, but "Maybe" not!
The power here is that while you are really operating in this context with an implicit possibility of having failure, you can program as if each step succeeded. So now we can string together a whole sequence of possibly-failing computations, and create a bigger possibly-failing super-computation that error checks under the hood.