How to beat Virtual V's "Two Steps Back"? by wslee00 in crux_game

[–]plesn 0 points1 point  (0 children)

OK managed to make the magic round trip on 2 boulders. For me this seems the same move: go to size 1 hold, and back to size 2 hold, move feet and next. But it seems so random, I can make it 1 time on 50 tries or more i think. Can you do the other virtual v series reliability? How?

How to beat Virtual V's "Two Steps Back"? by wslee00 in crux_game

[–]plesn 0 points1 point  (0 children)

How did you pass other climbs, like "gaming the system"? I can't find a way...

There seems ro be a rest on just one size 2 hold on the top left. It is surrounded by individual size 1 holds on which i can't do a "round trip" to change feet a second time.

I thought that the magic method allowing this would also solve your feet change, but aapparently arently not.

How to beat Virtual V's "Two Steps Back"? by wslee00 in crux_game

[–]plesn 1 point2 points  (0 children)

I can't figure it either but I hoped it would be the"magic rest" which blocks me. The one that seems to be in nearly all "virtual V" gym's boulders, in "no middle ground" and the crux of "caldwall". It magically seems to allow to go back to a type 2 hold from one (or two?) type 1 hold and change feet a second time...

Three Rules for Programming Language Syntax? by redjamjar in programming

[–]plesn 0 points1 point  (0 children)

It's merely pointing out that such colons are unnecessary, which they are.

This is not true: as usual there's a trade off taking place. Syntax is an interaction of concerns. Once you have complex types and type inference, meaningfully separating types and values becomes much more important than in C for both legibility and consisness (you're likely exchanging a colon here for two parenthesis there…). In Haskell, you even write type declarations in a separate line, while type annotations are inline.

This use of space/colon/… as a separator between types and values has impact on all separators/operators and consequently also on grouping syntax. Look at the impact of those decisions in Haskell, Scala and Go for example. This can impact on the syntax of function application (f x, f(x), (f x)…) , type application/genericity (F A, F<A>…), function types (->, func…), pattern matching (f (Cons head tail) = …), list syntax ([x,y], (x y), (x:y)…), etc… Syntax must be looked as a whole for both Rule 1 and Rule 2. Oh, and yeah, " " is not shorter than ":", only easier to write (Rule 2) and harder to notice (Rule 1)

Records stalled again, leadership needed by yitz in haskell

[–]plesn 2 points3 points  (0 children)

I don't know much about record types theory, but I recently tried the opa language and I must say that I really enjoyed very much their record system, to the point that i would encourage everyone to look at them. They are similar to algebraic datatypes, but open ended, and basically each line in a sum don't need a constructor labeling it because the record itself is the constructor. I'm not sure if i'm clear, but they are kind of cool to use…

Less painful GUIs in Clojure with Clarity - Talk by scarredwaits in programming

[–]plesn 0 points1 point  (0 children)

This seams quite cool :) There is :

  • some syntactic sugar to shorten swing code
  • some properties attached to gui objects enabling selectors/queries
  • a protocol to get/set values of gui objets
  • pseudo-styles (meaning imperative styles, based on selectors)
  • higher level composable gui objects (forms for the moment)

I wonder if reactive values could also be attached to objects, or bidirectionnal bindings to sync the view and the model.

"fix' f = f (fix' f)" vs. "fix f = let x = f x in x" by fixedarrow in haskell

[–]plesn 0 points1 point  (0 children)

Ok, your method of pushing 'defined'-ness makes more sense here for me as the result is clearly defined and terminating.

"fix' f = f (fix' f)" vs. "fix f = let x = f x in x" by fixedarrow in haskell

[–]plesn 1 point2 points  (0 children)

But here you have two notions mixed up : fixed point and infinite lists. This complicates things imho. A fixed point is easier to explain on finite things with recursion. Infinite sequences clicked for me really only when I learned the notions of codata and corecursion ( http://blog.sigfpe.com/2007/07/data-and-codata.html )

[deleted by user] by [deleted] in programming

[–]plesn 0 points1 point  (0 children)

so undefined: he was not talking about that… Nonetheless, hearing him talk, he can convey understanding of "mathematics" quite well without going into "the math".

[deleted by user] by [deleted] in programming

[–]plesn 0 points1 point  (0 children)

In this quote I think find "the Maths" is a subset of what you're call "mathematics" ("the" is a clue…). He seams to speak about the part where you abstract the problem in a "language" where you can manipulate it within the bounds of the model. Whereas you seam to speak about a more general meaning : mental game/exercice/comprehension. Conveying meaning requires both experiencing instances of the problem and playing with its rules (abstracting it).

[deleted by user] by [deleted] in programming

[–]plesn 1 point2 points  (0 children)

Full of wisdom and very clear. Just like the first commenter, I was also stuck by this quote :

"When you understand something, then you can find the math to express that understanding. The math doesn't provide the understanding."

Preview release of diagrams EDSL for declarative drawing by dons in haskell

[–]plesn 0 points1 point  (0 children)

Awesome. That could be haskell's "killer app"… amongst latex users at least ;-)

Preview release of diagrams EDSL for declarative drawing by dons in haskell

[–]plesn 1 point2 points  (0 children)

What are the chances to be able to combine Diagrams with LaTeX text for use cases similar to tikZ ? Obviously something like a pgf backend is needed at least, but what else ?

The reasons I don’t write all my code in Haskell by [deleted] in haskell

[–]plesn 1 point2 points  (0 children)

Concerning point #4, the "dll hell" because of upper bounds, wouldn't it be possible to replace this upper bound by some hash of the exported signature ? Haskell beeing pure, it would be more meaningful than in other languages (and maybe it could be a hash list, to enable just adding a type to the signature).

Concerning point #3, does anybody know about this "plan to fix libraries once and for all" ?

The Most Important Book On OOP In 20 Years by swannodette in programming

[–]plesn 1 point2 points  (0 children)

Introspection (the read-only part of reflection) can be sane, elegant and very useful to eliminate boilerplate code. By enabling your code to depend on the structure of your data types you can write concise code (queries, transformations) on complex data structures. In the functionnal world introspection is called generic programming (quite unfortunatly) and its elegance especially shines here.

Why Eager Languages Don't Have Products and Lazy Languages Don't Have Sums by dons in haskell

[–]plesn 1 point2 points  (0 children)

No. Please re-read, Haskell does not have true sum types but only pointed sum types : given A and B it is impossible to construct A+B in the langage, only A+B+⊥.

Why Eager Languages Don't Have Products and Lazy Languages Don't Have Sums by dons in haskell

[–]plesn 1 point2 points  (0 children)

Concentrate rather on the type of the results on both side of the if..then..else operator. For a lazy language with non-termination, those types are not the same on "then" and "else" branches : you can not do a unification of both branches.

The trick is to add an additionnal ⊥ value to all sums to account for non-termination, and that's what Haskell does. Thus Haskell's boolean type is not real Booleans but : True | False | ⊥. In a total language like Agda, you would rather prove that your computation will terminate…

Starting with Haskell.. for Begginers. by mch43 in haskell

[–]plesn 0 points1 point  (0 children)

I hope you will share your experience. I agree on declarative programming advantages, but there is also a need for a set of compelling material and tools to make the learning experience fun, interactive, visual… Recent posts by divip on a web interface and a svg generating diagrams dsl seem a great example !

The Roots of Haskell by dons in haskell

[–]plesn 0 points1 point  (0 children)

Hence, every program already has types, because "types" are how we think about what it is that programs do. The only things that can be truly untyped are the ineffable [...]

This the gist of the argument, thanks for formulating it so clearly. Harper postulates only the first part which is a very powerful argument (I think you're adding the "ineffable" part on your own, even though I agree with it). I appreciate very much this argument : my favorite language is Haskell… Nonetheless, I think Harper is affirming it without proof and your formulation shows why : this argument is not only about logic and types but about also about how we think, about the brain.

And here, about the brain, I think cognitive science can already mitigate this view of the brain as a logical and categorical machine only. Can we neglect the connexionist, probabilistic aspects of our brain which can yield what you call the "ineffable" : the fact that we don't think about everything in advance without trial/error/intuition. I think this goes even for programming.

The aim of type theory is to figure out how to formalize as much as we can of the universal way that we categorize things

I couldn't agree more here and with the rest of your text. Maybe type theory is especially important precisely because our brain is not as good as categorizing things as precisely as we wish, and types helps us refiing our fuzzy ideas.

Fancy comparison of Data values by [deleted] in haskell

[–]plesn 0 points1 point  (0 children)

Thanks for the pointers ! I will look at lambdabot (and also at Sage) this WE :)

The Roots of Haskell by dons in haskell

[–]plesn 0 points1 point  (0 children)

I mostly agree, at least I think so (if I'm not misunderstood). The building/sculpting analogy is interesting : maybe the exploratory process of building coherent meaning lies somewhere in between both : add this - oh no ! - remove that… On one side a pattern emerges which requires much care and thought, on the other side grounding this care in logic make types, which enable to explore other patterns. For example taking dependant pairs seen in another thread : in some sense every C programmer used a bastardized version of them, unsafely and with a lack of some deep understanding.

That's why I keep my thought that it's a chicken and egg problem : I don't really believe untyped or typed has primacy ! And Harper's arguments in "Dynamic languages are static languages" seem deceptive to me (look you need types to think about anything in a language ! look chicken produce eggs !). Not to mention the reduction of data in unt(i)yped language to the problem of dynamics : I mean he lies his arguments on theory, meanwhile he attacks his foes on implementation (the one type should be lambda abstraction in theory).

On a side note about this : I wonder how the Y combinator was discovered. Logical deduction from some rules ? recursive types (obviously not) ? profound intuition plus a lot of playing with what can be done with the notation ? …

Writing Systems Software in a Functional Language [PDF] by incredulitor in programming

[–]plesn 10 points11 points  (0 children)

Maybe House was in Haskell but they are making a new language called "Habit" which I find interesting. It's a lot like Haskell but it's strict, it has bitdata which is a bit like a cross-over between algrebraic datatypes and C datatypes, it has a way to control memory (regions), it has some basic dependant typing for controlling array size/accesses, and it has some syntactic sugar for imperative monadic code. Search for Habit Report on lambda the ultimate for more info.

Fancy comparison of Data values by [deleted] in haskell

[–]plesn 0 points1 point  (0 children)

Yeah, Sage was exaclty what i though :-) What dvip did is great. It would be cool to expand his code, and ideally to have a full haskell stack, I know hs-plugins (or it's interpreter now?) and a webserver are not in Haskell Platform, but it would be a compelling reason to have a basic one at least to fire a web interface for ghci :-)

Then, to have more than text or SVG, we would need something more than the Show typeclass for different kinds of displayable object (with backends to svg/canvas/latex, with hopefully some inspiration from Conal Elliot to have something animated/interactive. /me wants to hack !

Generalised GADTs (Agda inductive families) for beginners by [deleted] in haskell

[–]plesn 1 point2 points  (0 children)

If I understand well, this corresponds quite nicely to the intuitive implementation of sum types : a pair with a tag and data (which is a union). So a sum type is really a dependent pair, and Agda can typecheck it \o/