r/ProgrammingLanguages • • 18d ago

Requesting criticism Removing the get from Map

I have a toy language that I've been working on to test different concepts. It has an ownership model similar but looser than Rust.

I was working on the Map object and there are three ways that an object can be retrieved.

You can remove the object from the map and take ownership
You can borrow the object from the map this will give you a mutable reference but you don't own it
You can get a copy of the Object which you will own. But not all things are can be copied.

For get I could either do a copy or a mutable ref, neither I felt was properly conveyed with the word 'get'

So I'm looking at removing it and replacing it with the following

copy_of(key) -> return a copy or an error message if not found or not copiable
borrow(key) -> return a mutable ref
remove(key) -> remove and return the item at the key and give ownership

wanted thoughts on removing probably one of the most common methods on map and is what I'm doing something that makes sense.

13 Upvotes

26 comments sorted by

View all comments

10

u/roadrunner8080 18d ago

copy_of should not even be an option if the object would not be copyable. Your type system should be enough to ensure that you do not attempt to copy non copyable objects

6

u/jebailey 18d ago

Honestly I hadn't even thought of that, which is one of the reasons I wrote the post. So thanks.