this post was submitted on 16 Oct 2024
65 points (97.1% liked)

Rust

5999 readers
25 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 1 year ago
MODERATORS
 

If we were to create a Rust version of this page for Haskell, what cool programming techniques would you add to it?

you are viewing a single comment's thread
view the rest of the comments
[–] solrize@lemmy.world 5 points 1 month ago* (last edited 1 month ago) (2 children)

I'd like to see a Rust solution to Tony Morris's tic tac toe challenge:

https://blog.tmorris.net/posts/scala-exercise-with-types-and-abstraction/index.html

His rant about it is here:

https://blog.tmorris.net/posts/understanding-practical-api-design-static-typing-and-functional-programming/

I did a Haskell GADT solution some time back and it's supposed to be doable in Java and in C++. Probably Rust too. I wonder about Ada.

[–] LPThinker@lemmy.world 6 points 1 month ago (1 children)

This could be done almost trivially using the typestate pattern: https://zerotomastery.io/blog/rust-typestate-patterns/.

[–] solrize@lemmy.world 2 points 1 month ago* (last edited 1 month ago) (1 children)

Neat that looks interesting. There's a similar Haskell idiom called session types. I have a bit of reservation about whether one can easily use Rust traits to mark out the permissible state sets that an operation can take, but that's because I don't know Rust at all. I do remember doing a hacky thing with TypeLits in Haskell to handle that. Basically you can have numbers in the type signatures and do some limited arithmetic with them at type level. I'd be interested to know if that is doable in Rust.

[–] Ephera@lemmy.ml 2 points 3 weeks ago

Rust has "const generics" which are, for example, used to pass the length of a fixed-length array via the type system. Apparently, const generics also do allow for some mild arithmetic.

https://doc.rust-lang.org/reference/items/generics.html#const-generics

[–] silasmariner@programming.dev 2 points 1 month ago* (last edited 1 month ago) (1 children)

That doesn't look like a particularly difficult challenge? Like, it's just an implementation game, move returns a data type that you write yourself

Edit: I suppose there's life in that kind of ambiguous variation though

[–] solrize@lemmy.world 1 points 1 month ago

Well if there isn't already a Rust version on github, it could be cool to add one. A few other languages are already there.