this post was submitted on 29 Jan 2026
37 points (97.4% liked)

Programming

24969 readers
298 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
 

I hear they are good, make it easier to maintain code-bases. Most often I reach for python to get the job done. Does anyone have experiences with functional languages for larger projects?

In particular I am interested to learn more on how to handle databases, and writing to them and what patterns they come up with. Is a database handle you can write to not ... basically mutable state, the arch-nemesis of functional languages?

Are functional languages only useful with an imperative shell?

you are viewing a single comment's thread
view the rest of the comments
[–] movies@lemmy.world 5 points 5 days ago (1 children)

Not at all. Plenty of functional services run at scale at multinational companies. I personally prefer them over OOP.

What’s so special about database access? You pull data out. You transform it. You put data in. It’s just functions all the way down!

[–] partner_boat_slug@mander.xyz 2 points 5 days ago (4 children)

Are there entire operating systems written in a functional language? Why is it imperative languages like C?

[–] masterspace@lemmy.ca 9 points 5 days ago* (last edited 3 days ago)

Functional languages are inherently built on non-functional ones, for the same reason that object oriented languages are built on non object oriented ones, because cpus are fundamentally not object oriented or functional.

They are computational machines with specific instructions around moving values in memory and performing certain operations on them.

Assembly / machine code is always, at a fundamental level, procedural programming because at a the most fundamental level, cpus are designed as procedural machines, so all higher ordered languages, from C, all the way up through Python and Lisp, have to translate down to assembly, which maps to the machine's instruction set, which is procedural and imperative.

However, there is an OS that tries to be functional as much as possible though, and that's a Linux distribution called NixOS, based on the functional language Nix.

[–] setsubyou@lemmy.world 5 points 5 days ago

Emacs :)

Ok joking aside there were these things: https://en.wikipedia.org/wiki/Lisp_machine

There also are modern examples but they tend to be for specific niches like Mirage.

[–] Kacarott@aussie.zone 4 points 5 days ago

A few good reasons, the first being that brand new operating systems don't get written all that often. But even if they were, functional languages focus a lot on abstractions, making them generally higher level languages and so not fast enough to compete with C.

Having said that, Rust's design is quite inspired by functional languages in many ways, and it is indeed being used in operating systems.

[–] litchralee@sh.itjust.works 2 points 5 days ago

There can be, although some parts may still need to be written in assembly (which is imperative, because that's ultimately what most CPUs do), for parts like a kernel's context switching logic. But C has similar restrictions, like how it is impossible to start a C function without initializing the stack. Exception: some CPUs (eg Cortex M) have a specialized mechanism to initialize the stack.

As for why C, it's a low-level language that maps well to most CPU's native assembly language. If instead we had stack-based CPUs -- eg Lisp Machines or a real Java Machine -- then we'd probably be using other languages to write an OS for those systems.