VL : My beginners questions part 2

vl

#1

Compiling more questions here…

Interface

Region selection

It appears that when making selections, regions are often left out. Is there a key to press to include regions?
e.g. when doing marquee selection or clicking on region background.

This could be especially useful when trying to quickly move a region.

What are the practical ways to see the values of slices in a spread

It seems we don’t have either IOBoxes with row/col/page, and the tooltip/iobox only shows the first slice. Is there a simple way to see past the first slice for quick inspection? (e.g. the first 5-10 is often useful)

Language

What is a canvas?

What is a field?

Is this the same as a Pad?
These might just be legacy terms floating around the gray book

Library

Sequence vs Spread?

Any practical examples of where they differ?

The Gray Book

Where is the best place to discuss the gray book

Is there a GitHub-like issues section for the Gray Book, or a particular forum thread or something?
I noticed the comments system and started using that

Bugs?

Tab history navigation

Ctrl+Arrow key left/right doesnt seem to do anything

Solution Explorer group naming

All groups / collections in the Solution Explorer seem to be represented by the name of the document


#2
  • Region selection for now requires region label (topleft) to be included.
  • What are the practical ways to see the values of slices in a spread probably the biggest missing feature still atm. piping a value over to vvvv is helpful or using a getslice…upcoming version will have preliminary spreadsupport in ioboxes
  • What is a canvas? we’re struggling a bit with some terms. but i’d say it is synonym for patch.
  • What is a field? another such term. but essentially a field is the actual memory location, while you’re using a Pad to access it. ie. there can be many pads for one field.
  • Sequence vs Spread? see Collections

yes, please use gitbook comments/discussions

hm…not really sure what you mean here…


#3

continuing…

Interface

Whats with that stray input?

image

Language

How to patch an operation which takes a variable number of arguments?

Sequence

What is the easiest way to make a Sequence from a set of individual Values

I imagine a FromValues node which has a variable number of inputs. It seems I can use multiple FromValue nodes along with a Cons node

Can nodes have names?

C# programming

Are there any references for programming in C#

E.g. what is the correct way to make a set of static functions? Currently I’m putting public static functions inside a class, but then I present the VL programmer with an opportunity to create that (useless) class.


#4
  • What is the easiest way to make a Sequence from a set of individual Values for now: just a cons i’d say.
  • Are there any references for programming in C# see Writing Nodes
  • Can nodes have names? hmm.not entirely sure what you mean. they can have additional tags, see Documentation Window
  • How to patch an operation which takes a variable number of arguments? see Dynamic Pincounts
  • Whats with that stray input? explained in Forwarding Operations

#5

Thanks!
Sorry I added a couple above in my post from 14mins ago


#6

they are quite different, sequence is an interface implemented by almost all collections and comes with a huge amount of operations that therefore can be applied to all of those collections.

spread and other collections such as list, dictionary and so on are specific implementations of collection which have different advantages regarding how they store elements of which specific operations they support. also a sequence can be only a computation that produces elements on demand. and a sequence can only be iterated, there is no direct access to specific slices.

so sequence is the mother of collections and a general rule is have the least specific collection as input (sequence, readonly list etc.) and the most specific as output (spread, dictionary etc.).

see also: https://vvvv.org/blog/vl-groups-and-categories

often i just use a string IOBox, type in the values and then split the string and parse them. all that placed on create or in a cache region, so that the parsing only happens once.


#7

I guess my confusion with Sequence is that whilst it is often described similar to IEnumerable (as in, it is an interface which is compatible with many collection types), there is also a node to Create a Sequence directly. In this case, what am I actually creating? Does it default to System.Collections.Generic.List ?


#8

which specific node are you referring to? many sequence operators only create a computation that will yield elements when enumerated…


#9

Ah sorry, there’s the FromValue node which takes T as input and outputs Sequence<T>. Are you implying that the output type is actually a ‘data generator’ type which inherits from IEnumerable<T> but does not store any data by itself? (i.e. a kind of ‘minimum viable sequence’, but still a class which inherits from IEnumerable)

Also Concat outputs a new Sequence.


#10

yes, that is what most sequence/linq operators are doing. with that you can build huge or infinite sequences without calculating anything. and then work is only done element by element when iterating.

imagine a video player implementing IEnumerable that you can poll for the next frame. or a live stream, infinite sequence. as soon as this simple interface is implemented hundreds of operators can be applied to the video player.

on the downside, if you need to iterate multiple times over the whole sequence work is done multiple times. for this case you either need the memoize operator or simply get all elements into memory by converting it to a Spread, Array or so.

more on that:
https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b


#11

interesting. Just saw something about infinite data sets actually.

super nerd alert

https://www.youtube.com/watch?v=bnRNiE_OVWA