om

(om-language.com)

122 points | by tosh 2 hours ago

7 comments

  • irickt 1 hour ago
    A more explanatory article mentioned in the post: https://evincarofautumn.blogspot.com/2012/02/why-concatenati...
    • mosburger 46 minutes ago
      ah, thanks, that's why my first thought was that "hey, this feels very FORTH like"
  • esafak 1 hour ago
    And that's how you write a landing page if you don't want any takers.
    • crystal_revenge 47 minutes ago
      It's clearly a language designed for people interested in programming languages. Plenty of straightforward examples to show what makes this language interesting/different/worth your time.

      But if you're incurious about things that aren't immediately practical (which has sadly been a growing number of HN community in more recent years), you will probably not be interested.

      In an era when so much "practical" coding can be offloaded to an LLM, I'm particularly interested in seeing languages that are doing something different even if it makes them initially impractical.

      • einpoklum 3 minutes ago
        > In an era when so much "practical" coding can be offloaded to an LLM

        I see what you did there with the parentheses.

    • itishappy 47 minutes ago
      I don't think the project wants any "takers" per se. The first sentence describes it as:

      > a novel, maximally-simple concatenative, homoiconic programming and algorithm notation language

      This is a toy language designed to showcase a novel programming paradigm.

      Personally, I like tech demonstrations, so I scrolled down and found the examples section. That's all I was hoping to get out of this interaction.

    • mpalmer 44 minutes ago
      Life can be a dream if you don't treat everything as a pitch
    • codegeek 50 minutes ago
      I would at least update body tag to add basic css to make this more readable:

          <body style="width:80%;margin:auto;">
      • leephillips 31 minutes ago
        There is nothing wrong with the site as it is. The text reflows, so you can size your window to any width that you find comfortable. With a decent window manager this is just a few keystrokes at most.
    • meisel 1 hour ago
      Yeah show me the 5-line HTTP server
      • theamk 1 hour ago
        not that kind of language, it does not even come with integer types or "plus" operator by default.. they do give an example of

            define { minutes { dequote choose {minutes} {} = {:} <-[characters] } } { minutes {1:23} }
        
        which does Python's equivalent of

            "1:23".split(":", 1)[1]
        
        or for a more direct translation:

            def minutes(x): 
                return x[1:] if x[0] == ':' else minutes(x[1:])
            minutes("1:23")
      • KPGv2 1 hour ago
        "The Om language is not:

        complete. Although the intent is to develop it into a full-featured language, the software is currently at a very early "proof of concept" stage, requiring the addition of many operations (such as basic number and file operations) and optimizations before it can be considered useful for any real-world purpose. It has been made available in order to demonstrate the underlying concepts and welcome others to get involved in early development."

    • staticassertion 1 hour ago
      I am always kind of surprised when I go to a landing page for a language and there isn't any actual code. This is one of my biggest complaints about the rust language page, it feels crazy to me that there's no code and I think this is just a ridiculous choice (and I know this has been brought up before).

      The old page had a built-in sandbox. Go used to have a more "Front and center" sandbox too but at least it's there if you scroll down https://go.dev/

      • Anaminus 49 minutes ago
        One time, this annoyed me so much that I made a website.

        https://anaminus.github.io/langding/

        om would fall under "Yes, must scroll".

      • chriswarbo 1 hour ago
        > I am always kind of surprised when I go to a landing page for a language and there isn't any actual code.

        So, you're not surprised that this Om page has an extensive section called "Examples", right? https://www.om-language.com/#language__examples__

      • robotresearcher 1 hour ago
        There is code. Small examples start halfway down the page, and there's one 20-line example. Not much, but it's not accurate to say there's none.

        It would be helpful to see any kind of motivation for the project though. Anything at all.

        • oblio 33 minutes ago
          On my phone that code is about 250+ lines down, probably 4-5 screens down.

          It basically doesn't exist as far as marketing is concerned.

      • cess11 1 hour ago
        There is code, search for 'examples'.

        It concludes by implementing a fold:

           define
           {
               [Fold]<- {
                   rearrange
                   {
                       rearrange
                       {
                           dequote
                           choose
                           quote Result
                           pair pair pair {[Fold]<-} Function Result Remainder
                           Remainder
                       }
                       {Result Remainder}
                       dequote Function Base <-[terms] Source
                   }
                   {Function Base Source}
                }
           }
           {
               [Fold]<- {[literal]<-} {} {1 2 3}
           }
  • willquack 1 hour ago
    I worked with Jason (creator of Om) at my last job. He's awesome!
  • omoikane 53 minutes ago
    > any UTF-8 text (without byte-order marker) defines a valid Om program.

    What is the behavior of a program with unmatched braces? I am not sure a stray `}` would fit any of the defined syntax.

    https://www.om-language.com/index.html#language__syntax__

    • itishappy 48 minutes ago
      That would be parsed as a single operator and evaluated using the following rule:

      > Evaluates to the operation defined for the operator in the environment. If none, evaluates to a constant function that pushes the operator, followed by all input terms, onto the output program.

      I believe it would simply output itself.

  • bittermandel 1 hour ago
    I confused this with https://github.com/omcljs/om
    • jb1991 59 minutes ago
      Yeah Om was an extremely widely used Clojurescript library many years ago (maybe still is), and to me that's what this word will always refer to.
  • pgt 34 minutes ago
    Would recommend placing example language syntax above the fold. Was tough to have to scroll halfway down the entire site to see any syntax. Nobody cares about the EBNF syntax until they have a feel for the language.
  • jwilber 1 hour ago
    Will never not complain about languages not giving code examples. It’s like writing a charting/UI/style library and showing no examples. Just what?
    • john_strinlai 0 minutes ago
      the "examples" section is the largest section of the page
    • robotresearcher 1 hour ago
      You overlooked the examples. They might not satisfy you, but there are examples.
    • keeganpoppen 27 minutes ago
      if it's something you do 100% of the time, is it really adding any information to the world?