32

cross-posted from: https://programming.dev/post/23822190

I added this language to my watch list some time ago and forgot about it, until I got a notification about a new release (0.15) yesterday.

I'm someone who is familiar with system languages (C, Rust) and shell languages (Bash, Zsh, ..). But don't have much experience, at a proficient level, with any languages setting in between.

So I gave Koto's language guide a read, and found it to be very well-written, and the premise of the language in general to be interesting. I only got annoyed near the end when I got to @base, because I'm an anti-OOP diehard 😉

I hope this one well start to enjoy some adoption.

all 8 comments
sorted by: hot top controversial new old
[-] bunitor@lemmy.eco.br 7 points 1 month ago
print 'Hello, World!'
# -> Hello, World!

square = |n| n * n
'8 squared is {square 8}'
# -> 8 squared is 64

(2, 4, 6, 8)
  .each square
  .to_list()
# -> [4, 16, 36, 64]

it might be just me, but, from the code snippet, it feels a lot like ruby

[-] BB_C@programming.dev 4 points 1 month ago

As someone who doesn't know scripting languages well, what does make the snippet you posted particularly Ruby-ish?

Reading the guide, it felt like a relatively small consistent scripting language, with some Rustic touches. But I probably missed the touches from other languages I don't know.

But then, Rust itself took inspiration from many other languages, including Ruby itself. So, maybe everyone is taking from (or mimicking if you will) everyone.

BTW, that last part can be written as*:

# from iterator import each, to_list
» square -> each (2,4,6,8) -> to_list
➝ [4, 16, 36, 64]

which maybe mimics some other functional or functional-influenced language(s).


* may require 0.15.1

[-] bunitor@lemmy.eco.br 1 points 1 month ago

maybe it has to do with the lack of parens in the method calls and the chaining of method calls. this would be the ruby equivalent of the script:

puts 'Hello, World!'
# -> Hello, World!

def square(n) n*n end

[2, 4, 6, 8].map(&:square)
# -> [4, 16, 36, 64]

# another option
[2, 4, 6, 8].map{|n| n*n}
[-] busyvar@piaille.fr 2 points 1 month ago

@BB_C it seems to be designed as a Lua killer amid they don't have C API bridge yet.

[-] BB_C@programming.dev 3 points 1 month ago

they don’t have C API bridge yet.

WDYM

cargo add libc

Done 😎

There is an example in the repository showcasing interop with Rust. But I didn't find it compelling enough for people to like. It felt a bit too complex. But maybe the complexity is inherent. I don't know.

[-] asudox@discuss.tchncs.de 2 points 1 month ago* (last edited 1 month ago)

Oh, very nice. I was searching for an easy to use scripting language for a project I am making. Is it easy for beginners? I am currently using mlua, but it is a bit hacky. I liked Rhai, but it has no real LSP at the moment and no asynchronous code support. And also, does it have sandboxing?

this post was submitted on 08 Jan 2025
32 points (97.1% liked)

Rust

6451 readers
55 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

!performance@programming.dev

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 2 years ago
MODERATORS