sentenza / scala-algorithms

Algorithms and Data Structures in Scala
GNU General Public License v3.0
28 stars 19 forks source link

Upgrade to Scala 3 #44

Open sentenza opened 3 years ago

sentenza commented 3 years ago

Update the whole project to Scala 3

mfirry commented 2 years ago

Few notes here:

Can't see anything else.

mfirry commented 2 years ago

Unless we want to move to optional braces as well.

mfirry commented 2 years ago

Ah no sorry. Of course all ADTs can be rewritten using enums now. Should we do that as well?

sentenza commented 2 years ago
  • in MutableSorting Do-While syntax needs to be dropped (see here)

@mfirry yes, drop it! ;)

  • in Tree there are some minor errors for generic runtime erasure

Use enum for ADTs 👌

I assigned this one to you. Happy coding! 🎈

mfirry commented 2 years ago

Loudly thinking: I think enums for ADT will basically mean breaking out from Scala 2. Not sure you want that. How about creating a new repo? hacktoberfest-scala3-algorithms?

sentenza commented 2 years ago

Loudly thinking: I think enums for ADT will basically mean breaking out from Scala 2. Not sure you want that. How about creating a new repo? hacktoberfest-scala3-algorithms?

I'd rather prefer to have a single repo and a main branch. Maybe we could start creating a first Scala 3 version while tagging the previous one as scala-2.

I don't want to fall into the same errors that the Python community did in the near past when switching to a new major version of the language.

mfirry commented 2 years ago

I respectfully disagree here. If this was a library, I would agree 100%. This seems to be rather a showcase (and a very good one!) of Scala () implementation of algorithms and data structure.

This to me is a clear case where it can be even useful a separation between Scala 2 and Scala 3.

Having said that, of course one can do a mix, but I'd rather not :D

ivanopagano commented 2 years ago

submodules?

mfirry commented 2 years ago

submodules?

It's definitely an idea.

sentenza commented 2 years ago

I respectfully disagree here. If this was a library, I would agree 100%. This seems to be rather a showcase (and a very good one!) of Scala () implementation of algorithms and data structure.

This to me is a clear case where it can be even useful a separation between Scala 2 and Scala 3.

Having said that, of course one can do a mix, but I'd rather not :D

Please keep in mind that this is an educational project. The code presented here should be used to learn how to implement common algorithms in Scala. There is no dependency with anything else but the standard library for this specific reason.

It's easy to define a common strategy here. The perfect analogy is the way EPFL and Coursera are managing the revamped Scala courses: they're just updating their content to target Scala 3. The same goes with the books and all the official manuals.

Scala 2 is now the past.

No backsies. :no_good_man: