this post was submitted on 26 Jan 2024
87 points (92.2% liked)
Programming
17314 readers
191 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 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Factor!
It's incredible and elegant and defies some common categorization.
I've put some of my favorite resources in the sidebar of https://programming.dev/c/concatenative and I'm happy to walk through any particular challenges/examples -- I've done about the first week of Advent of Code with it this year, and the most recent handful of Perl Weekly Challenges, and some basic Euler problems.
Hi there! Looks like you linked to a Lemmy community using a URL instead of its name, which doesn't work well for people on different instances. Try fixing it like this: !concatenative@programming.dev
Re the sidebar: How are Nim and Roc partially concatenative?
I may be expressing it poorly and inaccurately, but what I mean is that in Nim you can re-order arguments and functions to start with some data followed by a series of transformations. The following two lines are equivalent:
Roc offers a similar flow with their
|>
operator. Here's a snippet from one of my Advent of Code 2022 solutions:https://en.wikipedia.org/wiki/Uniform_Function_Call_Syntax
Exactly. That's the second link under "Wikipedia Topics" in the sidebar.
That’s true, but if the transformations have more than one argument, they go after the name:
as opposed to concatenative programming languages, where all arguments go before the name and there’s no visual indication of the structure:
Also, there are more languages with this feature, for example D, VimScript or Koka.
Yup, I understand. That's why I've not put them in the concatenative section.
Thanks, maybe I'll add them to the sidebar! I hadn't heard of Koka.
If you have a suggested heading/description to replace "partially concatenative" I'm interested. Function chaining? And I'm not sure but maybe execline is actually concatenative and needs to be moved out of that section.
I think “uniform function call syntax” is the established term for this particular feature.
Thanks. I know that's the case for Nim's flexibility, but I didn't think it applied to the pipe operator stuff like in Roc. I'll do some reading tonight to confirm.