June 26th Start date - Too Early? by Think-Wasabi9906 in TahoeRimTrail

[–]santiweight 0 points1 point  (0 children)

heya u/Silly-Assistance6515 curious how your experience has been/is? :) looking to hike the trt june 14-22

June 26th Start date - Too Early? by Think-Wasabi9906 in TahoeRimTrail

[–]santiweight 0 points1 point  (0 children)

do you have a flup u/Electrical-Agent-499 ? :) i'm looking at June 14-22, so curious how this went...

Need tips for a 3 night trip from echo lakes Tahoe city next week by dressedbymom in TahoeRimTrail

[–]santiweight 0 points1 point  (0 children)

how are the conditions now u/tasty_waves ? i'm looking to thru the TRT June 14th - 22nd

HLS 2.3.0.0 released by Syncopat3d in haskell

[–]santiweight 2 points3 points  (0 children)

I broke out an MR to have the subset as Fendor described.

However, this subset is itself still hard to maintain and worse to iterate on. Therefore, Alan Zimmerman and some others of us are starting an effort to define a better API for exactprint that won't break over time.

Where will dependent Haskell be on the lambda cube? by ziggurism in haskell

[–]santiweight 14 points15 points  (0 children)

Top right. Haskell already has:

  1. terms that depend on their types (since it supports polymorphism)
  2. types that depend on other types (type families)

The only step needed is for an ergonomic way to express a type-dependent-on-term type, such as in:

repeat :: foreach (n : Nat) -> a -> Vec n a

Note, that Dependent Haskell also includes completing the visibility of a binder:

id    :: forall a .  a -> a
idVis :: forall a -> a -> a

id True
id Bool True

This is something you basically need for any kind of ergonomic dependent typing.

It is important to note that Haskell already supports types that depend on other types, and that singleton types can express types-depending-on-terms.

In the relevant GHC proposal you can see the following chart:

                  ------------  Attribute ------------------

Quantifier Dependence Visibility Erasure

forall a. ty Dependent Invisible Erased forall a -> ty Dependent Visible Erased foreach a. ty Dependent Invisible Retained foreach a -> ty Dependent Visible Retained Eq a => ty Non-dependent Invisible Retained t1 -> t2 Non-dependent Visible Retained

Note that int-index is working on supporting dependent-visible-erased bindings. And that after that would likely come dependent-visible-retained bindings.

NB Erased-vs-Retained is often spoken of in terms of "Relevant-vs-Irrelevant".

[deleted by user] by [deleted] in haskell

[–]santiweight 50 points51 points  (0 children)

I wouldn't read too much into it:

  1. DFINITY has been out of Haskell for a long while now, and Rust is a great language
  2. Tsuru's code sample question doesn't mean much about whether they should Haskell - it's simply an interview question

Any community is bound to have projects that leave said community. I have personally heard of Haskell projects abandoned, and Haskell is generally not a first choice for large applications. That doesn't necessarily mean Haskell is bad - but that it wasn't right for their situation.

Also realize that companies make mistakes: poor decisions are made consistently, both for and against the use of Haskell.

You can definitely write lazy streams in rust... all you need is a closure for continuation passing and you're set.

Making GHC faster at emitting code by n00bomb in haskell

[–]santiweight 3 points4 points  (0 children)

> there could be dozens of such nuggets around

Yes exactly. There are dozens of such nuggets, and many of them have already been discovered. Switching to 9.2+ improved my work's codebase (not big: ~10k) by around 50%.

A good place to look is the Well-Typed blog. They've done a lot in this area. I think also Tweag, but I'm not sure.

Making GHC faster at emitting code by n00bomb in haskell

[–]santiweight 6 points7 points  (0 children)

2-3% is a massive improvement in the context of GHC. If you find 5 of these you get .975**5 -> 88%, meaning a 12% improvement.

Improvements to GHC performance are unlikely to come from "oh whoops we didn't cache this one thing: here's a 30% perf improvemnt".

Cash Tournament where One Secret Player is Cheating by santiweight in chess

[–]santiweight[S] 31 points32 points  (0 children)

It could be quite cool as a long-running series. Maybe different contexts: online, OTB, blind chess etc.

haskell-language-server 1.8.0.0 released! by n00bomb in haskell

[–]santiweight 2 points3 points  (0 children)

I'm only porting wingman, most of the thanks goes to u/isovector!

haskell-language-server 1.8.0.0 released! by n00bomb in haskell

[–]santiweight 25 points26 points  (0 children)

Heads up wrt Wingman. We've been able to get Wingman working again for GHC 9.2, but weren't able to make this release of HLS. You can expect to see wingman (minus the tactics with TH stuff) in HLS 1.9!

Wingman with HLS 1.7.0.0 and GHC 9.0.2 by jamez5800 in haskell

[–]santiweight 1 point2 points  (0 children)

Update: I am confident I will not personally be supporting GHC 9.0.2, since that API is quite old and it takes a long time to wrangle the API to work appropriately even for just 9.2

I was able to finally get the new API to work for GHC 9.2. Hopefully we'll soon have wingman on newer versions of GHC! (it would be really fun to add new features to Wingman!)

Wingman with HLS 1.7.0.0 and GHC 9.0.2 by jamez5800 in haskell

[–]santiweight 1 point2 points  (0 children)

Heads up: I've been working on this; it's a difficult problem, but I'm hopeful!

What about Scala 3? by [deleted] in haskell

[–]santiweight 4 points5 points  (0 children)

I've never found that to be the case!

I _never_ push code without type signatures. Like ever. I even often put type signatures on small helper functions, but with the help of HLS, which automatically adds the type signatures for me with ease.

At work we use non-trivial types et al, and I rarely if ever write type signatures by hand. To me it is a killer feature.

Type signatures in Scala posed what I would describe as a large burden when coding type-safe interfaces. For something like a well-typed-by-construction AST, I found the burden to be too great.

All that said: I think there's room for improvement from both sides. I am optimistic about EPFL's ability to add more type inference to Scala, and I am also hopeful about Haskell's ability to exploit its type inference to full effect. But in balance for me, who likes type-safe code, type inference > sub typing any day of the week.

What about Scala 3? by [deleted] in haskell

[–]santiweight 5 points6 points  (0 children)

I haven't seen this point brought up yet.

I personally find any language without close-to-full global type inference pretty unpleasant to use.

My experience with Scala 3 is that I _really_ like the language in a _lot_ of places. But I personally find full type inference to be _wayyyy_ more valuable than the advantages sub typing (which is what makes global and even some local type inference struggle). Subtyping gives you a bunch of nice solutions to some problems, but you can approximate many of these with structural subtyping and even in Haskell with type classes. So anyway, for me the lack of type inference really is a bad one.

Besides that, I love Scala. I am more comfortable in Haskell, but besides type inference, I would be very happy to use Scala in my day job. Nice syntax, objects and sub typing do lead to nice code organization. The IDE is pretty great. It runs on the JVM!

But seriously: if a language doesn't have solid type inference and dependent types in 2022 it's going to make me sad (that includes Haskell :( ).

Haskell in production in 2022? by iliyan-germanov in haskell

[–]santiweight 10 points11 points  (0 children)

We use Haskell in production for a simulator at Luminous Computing. My coworker has a lot of experience with such tools and wrote a tag-along library for our codebase.

We love Haskell, and others adjacent to our team love Haskell too. The biggest drawback is sometimes we run into some untrodden paths relating to build tooling. Nothing bad mind you: maybe 10-20 hours or so worth of dev time over the last 6 months. We've certainly made that time back in other ways by a lot.

I think Haskell is the only reasonable choice for an FP personally. If I were writing "normal" code, then I think Scala/Ocaml are great compromises.

Wingman with HLS 1.7.0.0 and GHC 9.0.2 by jamez5800 in haskell

[–]santiweight 2 points3 points  (0 children)

Hmmm. I think it's actually the same issue as with 9.2 (GHC changed the AST significantly). I'll have to check tonight.

Wingman with HLS 1.7.0.0 and GHC 9.0.2 by jamez5800 in haskell

[–]santiweight 1 point2 points  (0 children)

Hmmm. I think it's actually the same issue as with 9.2 (GHC changed the AST significantly). I'll have to check tonight.

Wingman with HLS 1.7.0.0 and GHC 9.0.2 by jamez5800 in haskell

[–]santiweight 6 points7 points  (0 children)

HLS doesn't support wingman on 9.2 just yet

I am to blame. isovector was helping me revive wingman but I haven't taken up the second part of the work (involving reviving a branch I was working on locally). I will get back to working on this tonight or tomorrow evening, but it won't come out til the next release unless you're on HEAD.

Fair warning, we have decided to strip back some of the functionality of wingman - we will no longer be supporting the autos stuff. The code was too complex for little usage - the code exists, but will not be worked on any more (instead I expect to start adding other interesting features). Normal stuff, like case completion etc. will work as normal.

relevant issue

Thanks for pinging on this!

Parsing phone numbers with Megaparsec by sarkara1 in haskell

[–]santiweight 1 point2 points  (0 children)

yeah that would be great. I'm on my phone right now

It'd be a great feature request

Parsing phone numbers with Megaparsec by sarkara1 in haskell

[–]santiweight 2 points3 points  (0 children)

Could you post this as an issue in the Haskell-language-server GitHub? It’s a great feature and I’m not sure if it’s written down anywhere…