HNHacker News
TopNewBestAskShowJobs

taylorfausak

453 karma · joined November 5, 2010

http://taylor.fausak.me

[ my public key: https://keybase.io/taylorfausak; my proof: https://keybase.io/taylorfausak/sigs/A2PCjgr2EDNNESDi2ULoiDl4L7q-8NB0hCGk2pnfCSY ]

submissionscomments
taylorfausak··on Software projects written in Haskell
To give you a single data point, our Haskell code base at ITProTV is about 50,000 lines of code. Reloading the project after a change in GHCi takes slightly less than one second. We haven't spent any significant effort on speeding up compile speeds, for what it's worth. It's fast enough.
taylorfausak··on Rasa: Extremely modular text editor built in Haskell
> Rasa is putting extensions first from the very beginning, I've read that Yi has plans to extract their renderers into extensions but hasn't been able to easily extract them at this point. In rasa, EVERYTHING is an extension (for better or worse I suppose we'll see).

https://www.reddit.com/r/haskell/comments/5l0a2i/rasa_modula...

taylorfausak··on Rasa: Extremely modular text editor built in Haskell
> I named it after the concept of 'tabula rasa' which means roughly 'blank slate' which I thought was fitting for an editor

https://www.reddit.com/r/haskell/comments/5l0a2i/rasa_modula...

taylorfausak··on RFC 7764 – Guidance on Markdown
From John MacFarlane, the author of the CommonMark spec:

> If anyone wants to contribute a BNF, please do! But I'm very skeptical that it can be done, due to the many quirks of the syntax.

https://github.com/jgm/CommonMark/issues/113#issuecomment-60...

taylorfausak··on Remote work: 6 months later
I think it's a little misleading to call that "a while". The post says "156 private repositories" were affected during a "ten-minute window" representing "0.0013% of the total operations at the time".
taylorfausak··on Debugging with Elm 0.18
It sounds like you might like PureScript [1] or GHCJS [2] more than Elm. Have you tried either of those?

[1]: http://www.purescript.org/ [2]: https://github.com/ghcjs/ghcjs

taylorfausak··on Debugging with Elm 0.18
The migration guide [1] suggests that instead of primes you can use underscores. And instead of backticks you can use pipelining.

[1]: https://github.com/elm-lang/elm-platform/blob/11c8ecb81a58b8...

taylorfausak··on Pitfalls in Haskell
I tried this out in PureScript [1]. I also made each type class have only one member and didn't specify any class hierarchy. I like how it works, but I don't know if anyone else does. It allows you to recreate the category theory type classes [2] if you want to:

    class (HasMap f) <= Functor f
    class (Functor f, HasApply f) <= Apply f
    class (Apply f, HasPure f) <= Applicative f
    class (Apply m, HasChain m) <= Bind m
    class (Applicative m, Bind m) <= Monad m
[1]: https://github.com/tfausak/purescript-neon/blob/v0.5.4/src/N... [2]: https://pursuit.purescript.org/packages/purescript-prelude/1...
taylorfausak··on Pitfalls in Haskell
That's correct.

    {-# LANGUAGE DuplicateRecordFields #-}
    data A = B { x :: Bool }
           | C { x :: Int }

    Example.hs:2:1: error:
      • Constructors B and C give different types for field ‘x’
      • In the data type declaration for ‘A’
taylorfausak··on The Four Flaws of Haskell
My impression is that PureScript aims to not be configurable. For example, the compiler does not allow you to disable warnings. Other tools, like `psa`, can do that, but the base language is always the same.

Specifically related to language extensions, there is this wiki page: https://github.com/purescript/purescript/wiki/Differences-fr...

> The PureScript compiler does not support GHC-like language extensions.

taylorfausak··on The Four Flaws of Haskell
Sorry, I meant that you pretty much always want RankNTypes instead of Rank2Types. My fault for not specifying.
taylorfausak··on The Four Flaws of Haskell
Thanks for that link! I haven't seen that wiki page before. Even so, only 4 extensions have been removed. I know others are de facto deprecated, like Rank2Types.

I picked scoped type variables as an example because it's been in GHC since version 6.4. That was released in March 2005, so it had plenty of time to make it into the Haskell2010 language standard.

taylorfausak··on The Four Flaws of Haskell
Very few extensions have been deprecated: http://hackage.haskell.org/package/Cabal-1.24.0.0/docs/src/L...

Convenient, widely-used extensions that have been around for a long time aren't yet part of the language standard: https://prime.haskell.org/ticket/67

taylorfausak··on The Four Flaws of Haskell
This post explores the differences in those two styles: http://www.yesodweb.com/blog/2015/10/beginner-friendly-code-...

> It seems like my progression as a Haskeller results in forcing myself to write in a harder-to-parse style to make my code shorter, to satisfy some base need for "better" code, even though by most measurements I just made, the longer/explicit/pattern matching code is in fact better.

taylorfausak··on The Four Flaws of Haskell
This is another flaw that PureScript fixes: No language pragmas.
taylorfausak··on The Four Flaws of Haskell
Nix (and NixOS) are certainly nice to use with Haskell, but Stack is good. The post even says so:

> Stackage solved the consistent set of packages, and Stack made it even easier. I now consider Haskell package management a strength for large projects, not a risk.

taylorfausak··on The Four Flaws of Haskell
You can also build IO on top of the effect system https://github.com/slamdata/purescript-io :)
taylorfausak··on Haskell ArgumentDo Proposal
That doesn't compile to Haskell.
taylorfausak··on Understanding the Elm type system
Yes, all functions in Elm also have arity 1. That example desugars into this:

    connectWords = \ firstWord -> \ secondWord -> firstWord ++ secondWord
taylorfausak··on One-letter programming languages
A tiny language called Z: http://chrisdone.com/z/
taylorfausak··on Show HN: Discover new music through an infinite suggestion graph (React/Redux)
Cool! Sounds like a wikirace for music. https://en.wikipedia.org/wiki/Wikipedia:Wikirace
taylorfausak··on Atom Reaches 1M Active Monthly Users
You can disable the analytics from within Atom by disabling this package: https://atom.io/packages/metrics
taylorfausak··on Is Sound Gradual Typing Dead? [pdf]
> the paper ignores the reason why people kicked and screamed for the functionality to begin with

No it doesn't. The explicitly talk about this in section 7: "The acceptance of Typed Racket in the commercial and open-source Racket community suggests that (some) programmers find a way around the performance bottlenecks of sound gradual typing."

> Reticulated Python is still an order of magnitude faster than Ruby

Are you suggesting that a slower variant of Python is ten times faster than Ruby? That doesn't match my experience. For what it's worth, Ruby outperforms Python in some benchmarks: http://benchmarksgame.alioth.debian.org/u64q/ruby.html

taylorfausak··on W – A simple programming language
I know of a tiny language called Z: http://chrisdone.com/z/
taylorfausak··on John Carmack on Developing the Netflix App for Oculus
I think subtitles are supposed to be placed at particular places on the screen.
taylorfausak··on Cssnext: use tomorrow’s CSS syntax, today
That is true. I think you can work around it by prepending a space to the title. So this one would be " cssnext: use tomorrow's CSS syntax, today".
taylorfausak··on Show HN: Recalll – Search Engine for programmers and developers
For Haskell in particular, you are better off using Hoogle [1] or Hayoo [2].

[1]: https://www.haskell.org/hoogle/?hoogle=%3E%3D%3E [2]: http://hayoo.fh-wedel.de/?query=%3E%3D%3E

taylorfausak··on Can a Font Make Us Believe Something Is True?
I liked the article, but I did not like the eye in the header blinking at me as I read it.
taylorfausak··on Browser Monitoring for GitHub.com
I thought the engineering category did a good job separating their blog posts: https://github.com/blog/category/engineering
taylorfausak··on Elm 0.15: Asynchrony with Tasks
The decisions the Elm team make continue to impress me. I like that they are willing to break from tradition in order to create a better programming environment. In particular, changing the head function to be total is a great move.

    head : List a -> Maybe a
Compare that with the same function in Haskell.

    head :: [a] -> a
To me, the Elm version makes more sense. (It also avoids having to explain that "[a]" means "list of 'a's".)
Page 1 of 4Next →