r/ProgrammingLanguages 4d ago

Discussion Linux-like IO API

I'm building my own interpreted language.

I had an idea, to base my I/O API on the linux terminal commands, that many developers already know, so a user wouldn't need to learn an entire new API.

This is a basic example:

using io  

// create a directory  
mkdir("notes")  
cd("notes")  

// create files with content  
echo("Do my math.", "A note about homework.txt")  
echo("Buy milk and bread.", "shopping list.txt")  

const currentCD = pwd()  
const allFilesAndSubDirs = ls()  

debug(cat("shopping list.txt")) // prints "Buy milk and bread."

but I'm not that sure that this is a good idea, maybe some techniques are good for terminals but bad for programming, and some of the function names might be confusing (like pwd() which is "print working directory" but in my language it does not exactly PRINT anything, but just returns a string value).

What do you think?

3 Upvotes

8 comments sorted by

View all comments

1

u/tandycake 2d ago

Yes, Ruby basically did this with FileUtils:

https://docs.ruby-lang.org/en/master/FileUtils.html

As someone else mentioned, better to be in a namespace though (or module/class).

The echo is the only one that is very counterintuitive. If I did echo("foo","bar"), I would expect it to output foo and bar, not create a file named bar. It'd be fine if you have a required name param: echo("foo",to_file: "bar") or something like that.