# What starts with G? – How To Know If You Can Rap

We use a set of rules in our language that define what we call valid functions and that define, at runtime, how to check if a given function is valid. It’s called the validator.

Let’s take a look at a function that accepts two arguments, one for length and one for the first parameter:

function f(a,b) { return a + b; }

But what does it do here? At a minimum, we’re creating what is called an implicit parameter:

var g() { return 42; }

This is an implicit parameter because we don’t explicitly assign a value to it. The function then just returns the implicit value to the caller.

If we make a call like this, the validator could give us the following error:

// error: no implicit argument of type Number // in function f (arg = 42) a() => null; // error: no implicit argument of type Number // in function f (arg = 42) a() => 42;

This is because the expression ‘a() => 42’ doesn’t actually have a value attached to it. We could try the following, but it wouldn’t work:

var g = function(a) { return new Number(37); }

In other words, we try to get the value assigned to an implicit parameter by giving an invalid value to that parameter.

Let’s fix this by changing the function to look like the following, just to be sure:

var g = function(a) { return new Number(37); }

We can see how to assign values to the new keyword and get the value as if we just assigned a literal number to a:

var l1 = 42; var l2 = f(f(l1, l2)); // result: 1 // We could check the value of a by using // typeof a => 1 // in f(l2) // using typeof a => 1 // on the argument 42 if (a() is not null){a();} // we can change the expression from // `a() => x + 10` // to // `x + 10 == 10 // if we pass in a falsy value to the // implicit parameter; for // example, ’42 == [null, undefined]` var j = f(g(l2)); // result: 1 // We can change the value by using // the implicit parameter f to //

rap game now, how to rap fast, how to rap on beat, rap tutor, how to practice rapping