Language design opinions

It’s going to be object oriented (and functional too) but I wouldn’t go as far to say all things will be objects, a lot of things will be though

1 Like

By the way I’ve decided on the name of the language. It’s going to be Lab, short for Labrador

File extension? .lab

Edit: uhm, I know this is off topic, but why is there a cake next to my display name lol?
cake

3 Likes

It’s to signify your Anniversary on the Forums, you have been on this forum for a year :tada: !

4 Likes

Ah ok, thanks for informing me

Also many thanks to the community for making this an excellent year on Ask :tada:

2 Likes

Ok… so I keep changing things :grimacing: Lab will not use static, const or locked. Rather:

var will ONLY create a non-constant variable
declare will require a type, optionally a value, and will make it a constant
secure will be used to lock a variable

Here’s some of what else is going to be implemented:

var i = 0 ;; was `declare i as number = 0`
loop i.to 10:
   inc i
   print i
ok

For those who requested it: sorry, but curly brackets will not be used

secure sounds like you’re defining a env var or something, this is just really confusing

.?

why not i++ or i += 1 or i = i + 1, I prefer all of those over inc. also didn’t you say declare makes a constant value?

:skull:

2 Likes

lock then

Values and variables have methods. .to is a method to setup a loop

  1. Because I want it to be inc
  2. Pretend I wrote var, sometimes I do dumb

Yeah, I know, but I couldn’t think of a better word that would signify the end of blocks and seem like plain English

2 Likes

why not var, static, and const, though?

oh okay, wouldn’t it make more sense to call the method, like .to()

fair enough

perhaps… end?

  1. It simplifies it
  2. Complaints that static var or const var is too much to write

You could do either way in this specific situation, in others .to() might make more sense or be necessary. I was just giving an example of its usage

I was thinking this… but end feels clunky to me. I dunno, I’ll go with end and see what others think when Lab is complete.

Oh… btw… here’s a conditional example:

if someVar.is "something":
   ;; do something, yes, double semi is a comment
   ;; single semi is delimiter
but if someVar.length < 8:
   ;; something else
otherwise:
   ;; do something
end

.is instead of my personal hate ==

2 Likes

there’s still 3 keywords to declare a variable, I don’t see how it’s simpler

well it could be just static and const rather than static var and const var

crazy, please use // or # or --
or best of all, /ඞ/, gotta reference amonglang frfr /j

also I feel like using >/< but not using == is kinda inconsistent

1 Like

var x = 0 is as you expect
declare idk as string = "life, the universe, everything" a constant
lock idk now idk can’t be deleted
It is simplified, in terms of writing less

But those could actually be used for something… so ;; is staying. Period.

Lol. I understood that reference

:person_shrugging: ok. Gotcha
if x.greater_than 2732
if y.less_than 0

jk

It’s more like plain English the .is way

2 Likes

oh ok I misunderstood

  • //: could be used for floor division
  • #: could be used to get the length of an iterable (#iterable), but you already have iterable.length
  • --: could be used to decrement, but you are using keywords instead (dec i)

wdym by jk?

I seen your edits. They didn’t make as much sense as what I wrote does
Okay

Please explain this to me, I dunno what it is

I wanted to go with some ABC syntax with the # but .length is twice as readable

Built in functions, not keywords. inc and dec can be reassigned as functions

I was making a joke cause I wasn’t serious about making the verbose and inelegant .greater_than and .less_than. But :person_shrugging:

1 Like

:shushing_face: my brain was not working

1 / 3 = 0.333333333... (normal division), 1 // 3 = 0 (floor division)

so # is not used; why not use it for comments?

now I’m confused: how do you differentiate keywords from built-ins?

so you’re just going to keep it in this inconsistent way?

Because I already decided ;; is

Gotcha

Keywords cannot be redefined, e.g. def in Python
Functions can, e.g. print in Python

If you mean how could you tell if a word is a function or keyword in Lab… by checking it’s type

Yes.

If you wanna talk “inconsistent”, then English is a great place to start, yet (I think) billions use it daily. Not that it’s great, but it is usable. I think .is is a minor inconsistency that can be overlooked

1 Like

I know that

and how do you check its* type?

print type print?
print type type

Only about 1.5 billion people know English

But I don’t understand: You haven’t actually made it yet. People don’t use it. A billion people use English, it’s hard to change one word and force everyone to use it, just to make it more consistent. But since you haven’t finished Lab, make it consistent at the start. That’s all I’m saying

2 Likes

But why? That’s the most confusing symbol you could have chosen imo, besides like + or something.

2 Likes

Haven’t gotten to that yet

You’ve got a point. I’ll consider both, and release it with the official decision

3 Likes

I think ok should be the python equivalent of pass

2 Likes

In all fairness there are definitely other symbols that could be much more confusing
Maybe I’ll just force multi-line comments. Like I said earlier though: I’ll consider a lot, and the final decision will come in the form of a v1 release

1 Like