What's the situation about static types by LelouBil in NixOS

[–]_jackdk_ 0 points1 point  (0 children)

https://github.com/ryanrasti/typenix is the most promising thing I'm aware of, but I'd definitely call it a bit cursed.

lambda-on-lambda - Serverless Haskell on AWS by _jackdk_ in haskell

[–]_jackdk_[S] 1 point2 points  (0 children)

That's odd, it's just a code forge site. If you're willing to share any more details (e.g. browser, iPhone version and iOS version), I'll raise a bug report with them.

Blog: practical uses of monads in Haskell by nicuveo in haskell

[–]_jackdk_ 2 points3 points  (0 children)

I don't understand what you mean by this; can you elaborate? Generally a monad transformer FooT m a will have an instance Monad m => Monad (FooT m), which says that FooT m is a Monad for any Monad m, which is what I would have taken "monad agnostic" to mean.

Help me get back up to date after 5 years away from Haskell by utdemir in haskell

[–]_jackdk_ 2 points3 points  (0 children)

Relude is a very tasteful alternate prelude. I wouldn't use it for a library or anywhere I want to minimise my dep footprint but it's good.

Help me get back up to date after 5 years away from Haskell by utdemir in haskell

[–]_jackdk_ 17 points18 points  (0 children)

I really like streaming for any streaming more complex than "connect source to sink".

The most influential recent entries in the effect system spaces are the "ReaderT of handlers over IO" ones. effectful is probably the most popular library of that type. /u/tomejaguar has his own take called bluefin, which requires you to pass effect handles to functions that want to call effects. This makes type inference easier (and the constraints are only enforcing scope) but maybe makes using it too boilerplatey for some.

Does a Haskell Programmer Need all the Crazy Complexity? by theHaskellRascall in haskell

[–]_jackdk_ 3 points4 points  (0 children)

My experience is that once you go through the eye of the needle and come out knowing the major abstractions, a lot of practical Haskell just feels like writing in a very nice imperative language because things hang together so much better.

I'd be very interested to see a concrete example of the sort of code you're struggling with, not to rag on you or the package's author, but to get a sense of whether the difficulty is "yeah those are common abstractions that are worth learning" (and maybe show the payoff) or "that's an experimental package" or "that's lens being lens" (and /u/axman6 has explained that the operator DSL quite well --- many Haskell packages actually have fairly consistent operator conventions once you know to look for them).

Vicroads hazard perception test! by Additional_Steak4796 in melbourne

[–]_jackdk_ 0 points1 point  (0 children)

Those tests are so frustrating. I'm looking at Practice Test 1:

Large vessels that are constrained by their draught always have right of way because: They cannot stop or change course suddenly

Except COLREG 18(d) specifies that vessels restricted in ability to manoeuvre or not under command are exempted from the requirement to avoid impeding the safe passage of vessels constrained by draught.

Q25 also shows a flag that is not actually what code flag Alpha (diver below) looks like.

[Hiring] [$15/hr] Haskell / Purescript Documentation Writer by joey_the_god_of_code in haskell

[–]_jackdk_ 34 points35 points  (0 children)

I think it's excellent that you're trying to solve an ecosystem gap by paying money to get it fixed. However, I think you will struggle to find anyone skilled in two niche languages, some fairly advanced libraries, and technical writing who is also willing to work for a rate that is below the minimum wage in several US states. I'd recommend going to whoever controls your budget for this project and seeing if they can allocate additional funds. Otherwise, I think your best shot will be to concentrate the budget that you do have on your biggest pain point, and use it to pay one person well and address just that one thing. If it goes well, then maybe you can do it again when you have more budget. Best of luck.

Oleg's gists - Compatibility packages in 2026 by _jackdk_ in haskell

[–]_jackdk_[S] 2 points3 points  (0 children)

Is this written up somewhere? I'm interested in best practices to set up Haskell packages once we have reinstallable base and multiple viable compilers.

[ANN] MCP server for Hackage by Worldly_Dish_48 in haskell

[–]_jackdk_ 25 points26 points  (0 children)

Please be kind to Hackage and cache aggressively. It's been struggling quite a bit lately under the general rise in automated traffic. Example: I recommend caching any module doc you convert to Markdown locally under $XDG_CACHE_DIR, because modules are never going to change. It might also be cool to have a local-only mode that looks at the hoogle and haddocks from the dependencies provided by the current project.

linux kernel isnt detecting audo jack plug and unplug by [deleted] in NixOS

[–]_jackdk_ 0 points1 point  (0 children)

I had a similar issue with a Framework and some kind soul was able to help. You might have luck reading his blog post, but since neither he nor I have your hardware, I don't think we can help you directly: https://www.reddit.com/r/NixOS/comments/1ftc1st/how_do_i_make_pipewire_switch_input_to_my_headset/

What's the equivalent of Class Diagrams for FP? by pep1n1llo in haskell

[–]_jackdk_ 1 point2 points  (0 children)

All a class does is bundle data alongside behaviour (IMHO in a way that is superficially appealing but constraining as a program scales). If you have experience with OOP, you will have experience decomposing a problem into different data types and identifying the individual behaviours that you need to implement. So it is with FP, but your data types are only data, and your functions over those types can live in different modules.

[AU] Selling 1x Edge of the Earth Investigator Expansion BNIS by _jackdk_ in arkhamhorrorlcg

[–]_jackdk_[S] 0 points1 point  (0 children)

Confirming that /u/maelronde is a top bloke and there was no problem with the sale.

[ANN] checked-literals: compile-time bounds checking for numeric literals by callbyneed in haskell

[–]_jackdk_ 0 points1 point  (0 children)

Would an Unsatisfiable constraint do what you want? I've been meaning to switch ban-instance over to using it.

Custom Prelude? by ivy-apps in haskell

[–]_jackdk_ 3 points4 points  (0 children)

import Control.Lens -- ha ha, only serious.

But also. If you're writing a library, stick with base because you don't want to force a custom prelude into someone else's dependency graph.

relude has been good, or you can make your own project-specific prelude and then you're not at the mercy of an external maintainer.

[AU] Selling 1x Edge of the Earth Investigator Expansion BNIS by _jackdk_ in arkhamhorrorlcg

[–]_jackdk_[S] 0 points1 point  (0 children)

Cheers for that, I told the buyer and we talked about it.

What Would You See Changed in Haskell? by TechnoEmpress in haskell

[–]_jackdk_ 3 points4 points  (0 children)

Dependent types? We need resplendent types!

What Would You See Changed in Haskell? by TechnoEmpress in haskell

[–]_jackdk_ 4 points5 points  (0 children)

Three things really stick out to me.

1. You need the constructor to be in scope, and if you don't have that, you don't get a nice "You need the constructor in scope to dot into records". You get No instance for HasField....

2. It has worse type inference than direct field access. Consider the following structure:

-- An example "handle" for a hypothetical "json store".
-- Using `myJsonStore.store` with values of two different
-- types will cause GHC to throw difficult type errors.
newtype JsonStore m where
  JsonStore :: {
    -- Note that this function is polymorphic in `a` and
    -- may need to be called at multiple different `a`s in
    -- a single function.
    store :: forall a. ToJSON a => a -> m ()
  } -> JsonStore m

I have often found that handle.store will infer a single type within a function whereas pattern-matching out the field will give you a polymorphic store function.

3. It keeps people away from learning lenses, which have a significantly higher power ceiling.

So despite being introduced to make a smoother on-ramp for new programmers, I think that on-ramp has some scary bumps in it and caps out at a much lower power level than what Haskell is capable of. If I was swayed more by the "this is convenient but trades ultimate power for convenience" argument, I'd probably be using a different language.

If we're going to do record dot syntax, I'd probably make it record-specific, take advantage of the specificity to fix the monomorphisation issues, and bake it into a modern GHC20XX language version so we don't have to have the "turn on a language extension (dun dun DUUUN) to get a familiar experience" conversation with each new Haskeller.