joeyh, to programming

wrote this line of code like only a programmer can

a c t

lawik, to elixir
@lawik@fosstodon.org avatar

I have a company looking for multiple devs in the EU. Needs 1+ years of professional experience or unicersity Comp Sci.

Any of these is a qualifier to talk:

  • exp from banking/accounting
  • hard FP, Haskell, Elm, etc
  • BEAM skills

Multiple is chef kiss. DM to discuss :)

jbzfn, to programming
@jbzfn@mastodon.social avatar

λ How to read Haskell code (in 7 minutes)
— peppidesu


https://m.youtube.com/watch?v=gK0hMxJhqwM&feature=youtu.be

chshersh, to programming

I published the May update for the Core Libraries Committee (CLC) ✍️

🆕 4 new proposals
✅ 3 approved
🚫1 declined
🔥 1 hot discussion
💎 5 featured discussions with a common theme

Check it out 👇

https://discourse.haskell.org/t/clc-update-may-2023/6248

The longest and the most exhausting discussion for me personally is around the 'base' split and GHC internal modules.

It feels (to me personally) that the discussion is just circling around the same topics with no progress, and it's becoming too difficult to steer it 😞

The most controversial discussion is about adding types like Int8, Int16, Int32, Int64, Word8, etc. to Prelude.

Many people want it but many also are tired.

https://github.com/haskell/core-libraries-committee/issues/156

maralorn,
@maralorn@chaos.social avatar

Thank you, @chshersh. those summaries are excellent.

I also hope the split base discussion will lead somewhere soon. It is hard to follow.

chshersh,

@maralorn Thanks for your words!

Producing these montlhy summaries takes some time, so I'm happy to see that this work is appreciated by the community 🤗

I also do hope that the base split initiative will lead to something actionable soon. Asynchronous discussions where multiple parties need to reach consensus but not everyone has the same context, take a while :meowTears:​

DiazCarrete, to programming
@DiazCarrete@hachyderm.io avatar

Made a video about in which I give an example of the simplest possible Servant server.
🔗 📽️ https://youtu.be/YYmxAHWrFR4

ParetoOptimalDev, to programming
@ParetoOptimalDev@mas.to avatar

Any users that store per-project history using ? Especially if it's for and . I don't expect there will be Haskell specific things... but who doesn't like a copy-paste solution 🙃 Any thoughts in general on per project histories with desktop-save-mode?

dekkzz76,
@dekkzz76@emacs.ch avatar

@ParetoOptimalDev

Any good articles about how to start with project.el?

ParetoOptimalDev,
@ParetoOptimalDev@mas.to avatar

@dekkzz76 I don't know of any off-hand, but feel free to ask questions. I started with "what are the top 5 things I do with projectile and how do I do them in project.el" personally.

dgoldsmith, to programming
@dgoldsmith@mastodon.social avatar

One piece of advice I offer to younger software engineers (which means pretty much all software engineers, TBH) is to learn , even if you never write a line of production code in it. It will help you look at and attack problems in new ways.

https://haskellweekly.news/issue/366.html

dgoldsmith,
@dgoldsmith@mastodon.social avatar

@keirFox Spelling it out: I am old, elderly, aged, approaching retirement, etc.

cocoaphony,
@cocoaphony@mastodon.social avatar

@dgoldsmith Learning Haskell is probably the best remedy I know for the mistaken belief that "all languages are the same; you just have to learn the syntax." Once you've learned a truly different language, I think it helps you really think about programming in a better way.

But it can backfire. Once you've tried Haskell, you try to recreate it in places it doesn't belong. :D

Or worse, you try to bring Backus-style function-level programming to Swift: https://gist.github.com/rnapier/e64a4454b0efde1ca897b036eff158bf

(don't do this)

hungryjoe, to programming
@hungryjoe@functional.cafe avatar

Does anyone have a favourite intro to FFI in ? I've read the stuff on wiki.haskell.org, and the docs for the FFI language extension, but I think I'd benefit from something a bit more opinionated? Maybe a tutorial, ideally using Stack?

Also does the warning about using capi over ccall still agree with received wisdom?

clementd,
@clementd@framapiaf.org avatar
haskman, to programming
@haskman@functional.cafe avatar

is almost the perfect replacement. Not only for the things it brings to the table, but also for the things it does not.

I mean actual features missing from PureScript and not gotchas like no historical baggage!

Some examples below. All of them are good for simplicity and newbie friendliness!

  1. No laziness.

Laziness makes it harder to reason about performance. There are easy workarounds for most common usecases for laziness, and employing clever laziness tricks is usually not worth the cost of complicating the codebase.

Also, you can approximate thunks with functions when needed. Typeclass trickery even allows call-by-name evaluation (see https://github.com/natefaubion/purescript-call-by-name).

  1. Manual recursion is discouraged.

PureScript's TCO only works in special cases. Normally you wouldn't even need to deal with this because existing implementations of functions like map, foldr etc. are already tail recursion safe. For the rare cases when you need to manually recurse, you can use tailRec and tailRecM to ensure stack safety.

  1. No special syntax or support for linked lists. Strings are not simply lists of chars.

This could potentially be put in the "no historical baggage" category. But I feel that a lot of people, especially newbies, view the special treatment of lists and strings as a plus for Haskell.

However, the focus on lists causes massive confusion for newbies when they are encouraged to use types like Vector and Text in production instead. The special inbuilt syntax also is an active impediment for learning (for example, how do you refer to the higher kinded List type when deriving an instance? It's a mental leap to get to [] in instance Foo [] where).

  1. No special syntax for Tuples.

Much of what was said for lists also applies to tuples. The special syntax is confusing to newbies and causes code complications. For example, each length of tuple is a separate type, and typeclasses in Haskell need to derive instances for each separately. They usually derive instances for tuples only up to length 7.

In addition, it's rarely needed. I am yet to find a usecase for tuples where PureScript's wonderful support for records doesn't suffice. I thought one such usecase was case matching on multiple values (case (v1, v2) of ...), but PureScript supports multi case match for this exact usecase and avoids unnecessary boxing (In PureScript you would write case v1, v2 of ...).

6d03,
@6d03@mathstodon.xyz avatar

@haskman The much cleaner type class hierarchy of Purescript versus Haskell also deserves a mention.

haskman,
@haskman@functional.cafe avatar

@6d03 This post was more about features that are missing but not missed.

jbzfn, to programming
@jbzfn@mastodon.social avatar
xameer, to programming

The List Monoid
class Monoid m where
mempty :: m
mappend :: m -> m -> m
instance Monoid [a] where
mempty = []
mappend = (++)

https://people.cs.kuleuven.be/~tom.schrijvers/Research/talks/lhug4.pdf

6d03,
@6d03@mathstodon.xyz avatar

@xameer [()], i.e., the type of lists of the empty tuple is equivalent to inductively defined natural numbers. So yes.

haskman, to programming
@haskman@functional.cafe avatar

So I have a few thoughts on why Haskell is not more popular.

Haskell sort of dropped the ball by not being more user friendly. This is not about "keeping Haskell simple" - I like the fancy types and advanced features in Haskell and I wish it would get more such features - this is specifically about the community and the new user onboarding experience and how to fix it.

The problem is two fold -

1/n

https://functional.cafe/@haskman/110263531801953025

jbzfn, to programming
@jbzfn@mastodon.social avatar

「 It’s true that if you’re managing a software project the choice of tools does matter, but this choice pales in comparison to the following simpler ways to mitigate risk:

Offset the risk using as many legal and insurance instruments possible.

Having a highly liquid talent pool.

Factoring software failures into the expectations and economics of projects.

Ability to restart the project with different assumptions and team if it all goes awry 」
— Stephen Diehl https://www.stephendiehl.com/posts/marketing.html

Jose_A_Alonso, to programming
@Jose_A_Alonso@mathstodon.xyz avatar

Make invalid states representable. (We should model the state of a system using algebraic types and include states that are invalid). ~ Chris Martin (@chris__martin). https://typeclasses.substack.com/p/make-invalid-states-representable

nomeata, to programming
@nomeata@mastodon.online avatar

Thinking more about ways to get a build of the compiler GHC:
https://www.joachim-breitner.de/blog/802-More_thoughts_on_a_bootstrappable_GHC
(and hoping that someone else either has better ideas, or more stamina, to pull this through.)

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • thenastyranch
  • rosin
  • GTA5RPClips
  • osvaldo12
  • love
  • Youngstown
  • slotface
  • khanakhh
  • everett
  • kavyap
  • mdbf
  • DreamBathrooms
  • ngwrru68w68
  • provamag3
  • magazineikmin
  • InstantRegret
  • normalnudes
  • tacticalgear
  • cubers
  • ethstaker
  • modclub
  • cisconetworking
  • Durango
  • anitta
  • Leos
  • tester
  • JUstTest
  • All magazines