Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WISH: compact construction syntax for vector types #2396

Open
Oldes opened this issue Jan 29, 2020 · 3 comments
Open

WISH: compact construction syntax for vector types #2396

Oldes opened this issue Jan 29, 2020 · 3 comments

Comments

@Oldes
Copy link

Oldes commented Jan 29, 2020

As we don't have any syntax for vector and its variants, I think it would be nice to enhance construction syntax a little bit, to support short vector variant creation.

For example:

>> #[ui8! 3]
== make vector! [unsigned integer! 8 3 [0 0 0]]
>> #[si16! [1 2 3]]
== make vector! [integer! 16 3 [1 2 3]]

Supported numeric types could be:

si8!
si16!
si32!
si64!

ui8!
ui16!
ui32!
ui64!

f32!
f64!
Oldes added a commit to Oldes/Rebol3 that referenced this issue Jan 29, 2020
Implements: metaeducation/rebol-issues#2396

Example:
```
>> #[ui8! [1 2 3]]
== make vector! [unsigned integer! 8 3 [1 2 3]]

```
@jankom
Copy link

jankom commented Jan 29, 2020

Can I ask what you use vectors for in Rebol? Absolutely not that I think they aren't usefull, but I haven't thought of using them so far with Rebol and am just interested?

Does r3 have special block types like #[ ] ?

The solution of just having a function like a "vector" function like vector 'ui32 [ 1 2 3 ] is not OK because you want to create them directly from loader, not a block that is then loaded into vector at runtime?

@Oldes
Copy link
Author

Oldes commented Jan 30, 2020

At this moment I'm using vectors for sound processing and before I used them in graphics too.
#[] is construction syntax... usually used with save/all and mold/all to save data in serialized format without losing index.

>> mold next "123"
== {"23"}

>> mold/all next "123"
== {#[string! "123" 2]}

@Oldes
Copy link
Author

Oldes commented Jan 30, 2020

I know, that it is just a cosmetic thing, but why not to have it, when it was so cheap to add. My goal is to do 3D from Rebol one day, and I think, that code:

cam-Position: #[f32! [4.0 3.0 3.0]] ;Camera is at (4,3,3), in World Space
cam-Target:   #[f32! [0.0 0.0 0.0]] ;and looks at the origin
cam-Head:     #[f32! [0.0 1.0 0.0]] ;Head is up

looks better than:

cam-Position: make vector! [decimal! 32 [4.0 3.0 3.0]] ;Camera is at (4,3,3), in World Space
cam-Target:   make vector! [decimal! 32 [0.0 0.0 0.0]] ;and looks at the origin
cam-Head:     make vector! [decimal! 32 [0.0 1.0 0.0]] ;Head is up

Of course I can use helper functions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants