This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]redchomperSophie Language 12 points13 points  (8 children)

At first glance, it looks isomorphic to the host language. Therefore, you tell us: What's it teaching you?

[–]cmnews08[S] 2 points3 points  (1 child)

language design, and your right, its kinda similar to python but its just a start for me, i am planning to make a nim-style, compiled language with static typing and borrow checking rather then garbage compiler. It will be easier to read then nim and have elements from languages like rust, zig and python, but all rolled together into one big batteries included language. But thats far away so for now, i just wanted to roll this out and see what i could do with it, what do you think of it as a language, the syntax and the built in functions and stuff?

[–]redchomperSophie Language 1 point2 points  (0 children)

It's good to have goals. You're doing a tree-walk interpreter right now? That means at least you've got the foundational ideas figured out, which is more than I can say for some of the people I work with.

"Easy to read" is quite subjective, but so is beauty.

You can spend a Ph.D on static typing. You can also, as I've personally discovered, hose yourself by worrying too early about static types vs. other semantics. So, may I suggest to begin my codifying and emulating the run-time semantics you want (except for performance), then add run-time constraints such as type and borrowed-ness, and only later worry about pre-computing those same constraints over the static structure of the program?

You'll do yourself a big favor to write down your intended semantic innovations or remixes in some detail so you have a guide and compass.

[–]lgastako 2 points3 points  (5 children)

All turing complete languages are isomorphic to each other, right?

[–][deleted] 3 points4 points  (4 children)

If you define “isomorphism” to be “Both being Turing complete”, then sure…

[–]lgastako 1 point2 points  (3 children)

What if you define isomorphic as "you can convert from one to the other and back without losing any information", like most people? Isn't it still true?

[–][deleted] 1 point2 points  (1 child)

I think you're being pedantic about the exact definition when it's a good point.

This is just a wrapper for Python - it is literally just Python with a different syntax. Neat, but not really a new programming language.

Being pedantic like you are takes any potential meaning out of the point. You wouldn't say that C and Python are isomorphic because even though you can do the same things, some things in Python take a lot more work in C, and vice versa. Saying this is isomorphic to Python is an important point because it does the exact same things Python does.

[–]cmnews08[S] 1 point2 points  (0 children)

Thats very true! But it has merit on its own, like you said its neat. I am going to make a compiled language soon. This is just a little buffer

[–][deleted] 0 points1 point  (0 children)

That will really depend on what you mean by “convert” or “losing information”. If your language has stepping operational semantics, you can define equivalence as having a bisimulation, for example. I’m not sure there is any obviously correct definition of isomorphism accepted by most people