Skip to content

Function Call

Isaac Shelton edited this page Apr 9, 2022 · 2 revisions

Function Call

Functions are called by saying the name of a function and then the supplied arguments surrounded by parentheses, separated by commas.

someFunction(argument1, argument2, argument3, argumentN)

Function Resolution

Which function should be called is determined in two stages.

In the first stage, a strict search is done, which will match any functions with the same name, number of arguments, and argument types. If no matches are found in the first search stage, then the second stage will begin and a looser search is done.

The second looser search will match any functions with the same name, compatible number of arguments, and allowed argument deviations. Allowed argument deviations include: ptr to pointer types, pointer to bool decay, compatible floating-point values, compatible integer values, and user-defined implicit conversions.

If no other factor can be used to select which should be used, then the first possible function declared will be selected.

Additional Details:

  • Polymorphic functions can match during either stage, after non-polymorphic functions are checked.
  • Local function pointers are always preferred over functions.
  • Functions that have the same name as a local function pointer are unable to be called while it's still in scope.
  • Functions are always preferred over global variable function pointers.

Argument Passing

Values that have a corresponding __pass__ function, will be passed through __pass__ before the function receives them.

Result Value

The resulting value is the value returned by the function. If the function returns void, then it cannot be used within an expression, but only as a statement.

Neglected Return Values

If the callee returns a value that is ignored and the ignored value has a __defer__, then the corresponding __defer__ will implicitly be called on the neglected value.

Tentative Function Calls

Function calls can be made tentative by adding a ? after the name of the function.

doSomething?()

Tentative function calls will collapse to void if the compiler cannot compile them.

Specifying Return Type

The ~> operator can be used to target a specific version of a function that returns a certain type.

getZeroLike() ~> int

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Function Call · AdeptLanguage/Adept Wiki · GitHub
Skip to content

Function Call

Isaac Shelton edited this page Apr 9, 2022 · 2 revisions

Function Call

Functions are called by saying the name of a function and then the supplied arguments surrounded by parentheses, separated by commas.

someFunction(argument1, argument2, argument3, argumentN)

Function Resolution

Which function should be called is determined in two stages.

In the first stage, a strict search is done, which will match any functions with the same name, number of arguments, and argument types. If no matches are found in the first search stage, then the second stage will begin and a looser search is done.

The second looser search will match any functions with the same name, compatible number of arguments, and allowed argument deviations. Allowed argument deviations include: ptr to pointer types, pointer to bool decay, compatible floating-point values, compatible integer values, and user-defined implicit conversions.

If no other factor can be used to select which should be used, then the first possible function declared will be selected.

Additional Details:

  • Polymorphic functions can match during either stage, after non-polymorphic functions are checked.
  • Local function pointers are always preferred over functions.
  • Functions that have the same name as a local function pointer are unable to be called while it's still in scope.
  • Functions are always preferred over global variable function pointers.

Argument Passing

Values that have a corresponding __pass__ function, will be passed through __pass__ before the function receives them.

Result Value

The resulting value is the value returned by the function. If the function returns void, then it cannot be used within an expression, but only as a statement.

Neglected Return Values

If the callee returns a value that is ignored and the ignored value has a __defer__, then the corresponding __defer__ will implicitly be called on the neglected value.

Tentative Function Calls

Function calls can be made tentative by adding a ? after the name of the function.

doSomething?()

Tentative function calls will collapse to void if the compiler cannot compile them.

Specifying Return Type

The ~> operator can be used to target a specific version of a function that returns a certain type.

getZeroLike() ~> int

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Function Call · AdeptLanguage/Adept Wiki · GitHub
Skip to content

Function Call

Isaac Shelton edited this page Apr 9, 2022 · 2 revisions

Function Call

Functions are called by saying the name of a function and then the supplied arguments surrounded by parentheses, separated by commas.

someFunction(argument1, argument2, argument3, argumentN)

Function Resolution

Which function should be called is determined in two stages.

In the first stage, a strict search is done, which will match any functions with the same name, number of arguments, and argument types. If no matches are found in the first search stage, then the second stage will begin and a looser search is done.

The second looser search will match any functions with the same name, compatible number of arguments, and allowed argument deviations. Allowed argument deviations include: ptr to pointer types, pointer to bool decay, compatible floating-point values, compatible integer values, and user-defined implicit conversions.

If no other factor can be used to select which should be used, then the first possible function declared will be selected.

Additional Details:

  • Polymorphic functions can match during either stage, after non-polymorphic functions are checked.
  • Local function pointers are always preferred over functions.
  • Functions that have the same name as a local function pointer are unable to be called while it's still in scope.
  • Functions are always preferred over global variable function pointers.

Argument Passing

Values that have a corresponding __pass__ function, will be passed through __pass__ before the function receives them.

Result Value

The resulting value is the value returned by the function. If the function returns void, then it cannot be used within an expression, but only as a statement.

Neglected Return Values

If the callee returns a value that is ignored and the ignored value has a __defer__, then the corresponding __defer__ will implicitly be called on the neglected value.

Tentative Function Calls

Function calls can be made tentative by adding a ? after the name of the function.

doSomething?()

Tentative function calls will collapse to void if the compiler cannot compile them.

Specifying Return Type

The ~> operator can be used to target a specific version of a function that returns a certain type.

getZeroLike() ~> int

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Function Call · AdeptLanguage/Adept Wiki · GitHub
Skip to content

Function Call

Isaac Shelton edited this page Apr 9, 2022 · 2 revisions

Function Call

Functions are called by saying the name of a function and then the supplied arguments surrounded by parentheses, separated by commas.

someFunction(argument1, argument2, argument3, argumentN)

Function Resolution

Which function should be called is determined in two stages.

In the first stage, a strict search is done, which will match any functions with the same name, number of arguments, and argument types. If no matches are found in the first search stage, then the second stage will begin and a looser search is done.

The second looser search will match any functions with the same name, compatible number of arguments, and allowed argument deviations. Allowed argument deviations include: ptr to pointer types, pointer to bool decay, compatible floating-point values, compatible integer values, and user-defined implicit conversions.

If no other factor can be used to select which should be used, then the first possible function declared will be selected.

Additional Details:

  • Polymorphic functions can match during either stage, after non-polymorphic functions are checked.
  • Local function pointers are always preferred over functions.
  • Functions that have the same name as a local function pointer are unable to be called while it's still in scope.
  • Functions are always preferred over global variable function pointers.

Argument Passing

Values that have a corresponding __pass__ function, will be passed through __pass__ before the function receives them.

Result Value

The resulting value is the value returned by the function. If the function returns void, then it cannot be used within an expression, but only as a statement.

Neglected Return Values

If the callee returns a value that is ignored and the ignored value has a __defer__, then the corresponding __defer__ will implicitly be called on the neglected value.

Tentative Function Calls

Function calls can be made tentative by adding a ? after the name of the function.

doSomething?()

Tentative function calls will collapse to void if the compiler cannot compile them.

Specifying Return Type

The ~> operator can be used to target a specific version of a function that returns a certain type.

getZeroLike() ~> int

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Function Call · AdeptLanguage/Adept Wiki · GitHub
Skip to content

Function Call

Isaac Shelton edited this page Apr 9, 2022 · 2 revisions

Function Call

Functions are called by saying the name of a function and then the supplied arguments surrounded by parentheses, separated by commas.

someFunction(argument1, argument2, argument3, argumentN)

Function Resolution

Which function should be called is determined in two stages.

In the first stage, a strict search is done, which will match any functions with the same name, number of arguments, and argument types. If no matches are found in the first search stage, then the second stage will begin and a looser search is done.

The second looser search will match any functions with the same name, compatible number of arguments, and allowed argument deviations. Allowed argument deviations include: ptr to pointer types, pointer to bool decay, compatible floating-point values, compatible integer values, and user-defined implicit conversions.

If no other factor can be used to select which should be used, then the first possible function declared will be selected.

Additional Details:

  • Polymorphic functions can match during either stage, after non-polymorphic functions are checked.
  • Local function pointers are always preferred over functions.
  • Functions that have the same name as a local function pointer are unable to be called while it's still in scope.
  • Functions are always preferred over global variable function pointers.

Argument Passing

Values that have a corresponding __pass__ function, will be passed through __pass__ before the function receives them.

Result Value

The resulting value is the value returned by the function. If the function returns void, then it cannot be used within an expression, but only as a statement.

Neglected Return Values

If the callee returns a value that is ignored and the ignored value has a __defer__, then the corresponding __defer__ will implicitly be called on the neglected value.

Tentative Function Calls

Function calls can be made tentative by adding a ? after the name of the function.

doSomething?()

Tentative function calls will collapse to void if the compiler cannot compile them.

Specifying Return Type

The ~> operator can be used to target a specific version of a function that returns a certain type.

getZeroLike() ~> int

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Function Call · AdeptLanguage/Adept Wiki · GitHub
Skip to content

Function Call

Isaac Shelton edited this page Apr 9, 2022 · 2 revisions

Function Call

Functions are called by saying the name of a function and then the supplied arguments surrounded by parentheses, separated by commas.

someFunction(argument1, argument2, argument3, argumentN)

Function Resolution

Which function should be called is determined in two stages.

In the first stage, a strict search is done, which will match any functions with the same name, number of arguments, and argument types. If no matches are found in the first search stage, then the second stage will begin and a looser search is done.

The second looser search will match any functions with the same name, compatible number of arguments, and allowed argument deviations. Allowed argument deviations include: ptr to pointer types, pointer to bool decay, compatible floating-point values, compatible integer values, and user-defined implicit conversions.

If no other factor can be used to select which should be used, then the first possible function declared will be selected.

Additional Details:

  • Polymorphic functions can match during either stage, after non-polymorphic functions are checked.
  • Local function pointers are always preferred over functions.
  • Functions that have the same name as a local function pointer are unable to be called while it's still in scope.
  • Functions are always preferred over global variable function pointers.

Argument Passing

Values that have a corresponding __pass__ function, will be passed through __pass__ before the function receives them.

Result Value

The resulting value is the value returned by the function. If the function returns void, then it cannot be used within an expression, but only as a statement.

Neglected Return Values

If the callee returns a value that is ignored and the ignored value has a __defer__, then the corresponding __defer__ will implicitly be called on the neglected value.

Tentative Function Calls

Function calls can be made tentative by adding a ? after the name of the function.

doSomething?()

Tentative function calls will collapse to void if the compiler cannot compile them.

Specifying Return Type

The ~> operator can be used to target a specific version of a function that returns a certain type.

getZeroLike() ~> int

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Function Call · AdeptLanguage/Adept Wiki · GitHub
Skip to content

Function Call

Isaac Shelton edited this page Apr 9, 2022 · 2 revisions

Function Call

Functions are called by saying the name of a function and then the supplied arguments surrounded by parentheses, separated by commas.

someFunction(argument1, argument2, argument3, argumentN)

Function Resolution

Which function should be called is determined in two stages.

In the first stage, a strict search is done, which will match any functions with the same name, number of arguments, and argument types. If no matches are found in the first search stage, then the second stage will begin and a looser search is done.

The second looser search will match any functions with the same name, compatible number of arguments, and allowed argument deviations. Allowed argument deviations include: ptr to pointer types, pointer to bool decay, compatible floating-point values, compatible integer values, and user-defined implicit conversions.

If no other factor can be used to select which should be used, then the first possible function declared will be selected.

Additional Details:

  • Polymorphic functions can match during either stage, after non-polymorphic functions are checked.
  • Local function pointers are always preferred over functions.
  • Functions that have the same name as a local function pointer are unable to be called while it's still in scope.
  • Functions are always preferred over global variable function pointers.

Argument Passing

Values that have a corresponding __pass__ function, will be passed through __pass__ before the function receives them.

Result Value

The resulting value is the value returned by the function. If the function returns void, then it cannot be used within an expression, but only as a statement.

Neglected Return Values

If the callee returns a value that is ignored and the ignored value has a __defer__, then the corresponding __defer__ will implicitly be called on the neglected value.

Tentative Function Calls

Function calls can be made tentative by adding a ? after the name of the function.

doSomething?()

Tentative function calls will collapse to void if the compiler cannot compile them.

Specifying Return Type

The ~> operator can be used to target a specific version of a function that returns a certain type.

getZeroLike() ~> int

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Function Call · AdeptLanguage/Adept Wiki · GitHub
Skip to content

Function Call

Isaac Shelton edited this page Apr 9, 2022 · 2 revisions

Function Call

Functions are called by saying the name of a function and then the supplied arguments surrounded by parentheses, separated by commas.

someFunction(argument1, argument2, argument3, argumentN)

Function Resolution

Which function should be called is determined in two stages.

In the first stage, a strict search is done, which will match any functions with the same name, number of arguments, and argument types. If no matches are found in the first search stage, then the second stage will begin and a looser search is done.

The second looser search will match any functions with the same name, compatible number of arguments, and allowed argument deviations. Allowed argument deviations include: ptr to pointer types, pointer to bool decay, compatible floating-point values, compatible integer values, and user-defined implicit conversions.

If no other factor can be used to select which should be used, then the first possible function declared will be selected.

Additional Details:

  • Polymorphic functions can match during either stage, after non-polymorphic functions are checked.
  • Local function pointers are always preferred over functions.
  • Functions that have the same name as a local function pointer are unable to be called while it's still in scope.
  • Functions are always preferred over global variable function pointers.

Argument Passing

Values that have a corresponding __pass__ function, will be passed through __pass__ before the function receives them.

Result Value

The resulting value is the value returned by the function. If the function returns void, then it cannot be used within an expression, but only as a statement.

Neglected Return Values

If the callee returns a value that is ignored and the ignored value has a __defer__, then the corresponding __defer__ will implicitly be called on the neglected value.

Tentative Function Calls

Function calls can be made tentative by adding a ? after the name of the function.

doSomething?()

Tentative function calls will collapse to void if the compiler cannot compile them.

Specifying Return Type

The ~> operator can be used to target a specific version of a function that returns a certain type.

getZeroLike() ~> int

Clone this wiki locally