File: vim9_tuples.vim

package info (click to toggle)
vim 2%3A9.1.2103-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 93,456 kB
  • sloc: ansic: 433,730; cpp: 6,399; makefile: 4,597; sh: 2,397; java: 2,312; xml: 2,099; python: 1,595; perl: 1,419; awk: 730; lisp: 501; cs: 458; objc: 369; sed: 8; csh: 6; haskell: 1
file content (25 lines) | stat: -rw-r--r-- 670 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
vim9script
# Vim9 tuples


# https://github.com/vim/vim/pull/16935#issuecomment-2738310273

function LegacyMakeEntry(key, value) abort
    return (a:key, a:value)
endfunction

def MakeEntry(key: string, value: any): tuple<string, any>
    return (key, value)
enddef

function LegacyMakeLazyList(e1, e2) abort
    return ({e1_, e2_ -> {-> [e1_, e2_]}}(a:e1, a:e2))
endfunction

def MakeLazyList(e1: any, e2: any): func(): list<any>
    return (((e1_: any, e2_: any) => () => [e1_, e2_])(e1, e2))
enddef

echo MakeEntry('key', 'value') == list2tuple(MakeLazyList('key', 'value')())
echo LegacyMakeEntry('key', 'value') == list2tuple(LegacyMakeLazyList('key', 'value')())