wlambda 0.5.0

WLambda is an embeddable scripting language for Rust
Documentation
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
" Vim syntax file
" Language: WLambda
" Last Change: 2019-07-15
" Author: Weird Constructor <weirdconstructor@gmail.com>
" Maintainer: Weird Constructor <weirdconstructor@gmail.com>

"if exists("b:current_syntax")
"  finish
"endif

syn match wlSymbol      ':[^[:space:]\.,;{}\[\]()~|="]\+'

syn match wlIdentifier  /[a-zA-Z_@]\+[^[:space:]\.,;{}\[\]()~|=]*/
syn match wlAssignId    /[a-zA-Z_@]\+[^[:space:]\.,;{}\[\]()~|=]*/ contained
syn match wlMapKeyId    /[a-zA-Z_@]\+[^[:space:]\.,;{}\[\]()~|=]*\s*\ze=/ contained

syn match wlComment /#.*$/

syn keyword wlRepeat    for while range return break next match
syn keyword wlKeyword   panic not block unwrap unwrap_err error_to_str
syn keyword wlKeyword   sym is_some is_none is_err is_map is_vec is_fun is_str is_sym
syn keyword wlKeyword   is_ref is_wref is_bool is_bytes is_float is_int len type to_drop
syn keyword wlKeyword   float bool int on_error
syn match wlKeyword "_?"

syn match wlKeyword "std:append"
syn match wlKeyword "std:assert"
syn match wlKeyword "std:assert_eq"
syn match wlKeyword "std:bytes:from_hex"
syn match wlKeyword "std:bytes:from_vec"
syn match wlKeyword "std:bytes:to_hex"
syn match wlKeyword "std:bytes:to_vec"
syn match wlKeyword "std:chrono:timestamp"
syn match wlKeyword "std:cmp:num:asc"
syn match wlKeyword "std:cmp:num:desc"
syn match wlKeyword "std:cmp:str:asc"
syn match wlKeyword "std:cmp:str:desc"
syn match wlKeyword "std:copy"
syn match wlKeyword "std:deser:csv"
syn match wlKeyword "std:deser:json"
syn match wlKeyword "std:deser:msgpack"
syn match wlKeyword "std:displayln"
syn match wlKeyword "std:drop"
syn match wlKeyword "std:dump_func"
syn match wlKeyword "std:fold"
syn match wlKeyword "std:hash:fnv1a"
syn match wlKeyword "std:io:file:append"
syn match wlKeyword "std:io:file:read"
syn match wlKeyword "std:io:file:read_text"
syn match wlKeyword "std:io:file:write_safe"
syn match wlKeyword "std:measure_time"
syn match wlKeyword "std:neg"
syn match wlKeyword "std:num:abs"
syn match wlKeyword "std:num:int_to_closed_open01"
syn match wlKeyword "std:num:int_to_open01"
syn match wlKeyword "std:num:int_to_open_closed01"
syn match wlKeyword "std:pop"
syn match wlKeyword "std:prepend"
syn match wlKeyword "std:push"
syn match wlKeyword "std:rand:split_mix64_new"
syn match wlKeyword "std:rand:split_mix64_new_from"
syn match wlKeyword "std:rand:split_mix64_next"
syn match wlKeyword "std:rand:split_mix64_next_closed_open01"
syn match wlKeyword "std:rand:split_mix64_next_open01"
syn match wlKeyword "std:rand:split_mix64_next_open_closed01"
syn match wlKeyword "std:re:map"
syn match wlKeyword "std:re:match"
syn match wlKeyword "std:re:replace_all"
syn match wlKeyword "std:ref_id"
syn match wlKeyword "std:ser:csv"
syn match wlKeyword "std:ser:json"
syn match wlKeyword "std:ser:msgpack"
syn match wlKeyword "std:set_ref"
syn match wlKeyword "std:shuffle"
syn match wlKeyword "std:sort"

syn match wlKeyword "str"
syn match wlKeyword "std:str:cat"
syn match wlKeyword "std:str:from_char_vec"
syn match wlKeyword "std:str:from_utf8"
syn match wlKeyword "std:str:from_utf8_lossy"
syn match wlKeyword "std:str:join"
syn match wlKeyword "std:str:len"
syn match wlKeyword "std:str:padl"
syn match wlKeyword "std:str:padr"
syn match wlKeyword "std:str:to_bytes"
syn match wlKeyword "std:str:to_char_vec"
syn match wlKeyword "std:str:to_lowercase"
syn match wlKeyword "std:str:to_uppercase"
syn match wlKeyword "std:str:write"
syn match wlKeyword "std:strengthen"
syn match wlKeyword "std:take"
syn match wlKeyword "std:to_drop"
syn match wlKeyword "std:to_no_arity"
syn match wlKeyword "std:to_ref"
syn match wlKeyword "std:uneg"
syn match wlKeyword "std:unshift"
syn match wlKeyword "std:weaken"
syn match wlKeyword "std:wlambda:version"
syn match wlKeyword "std:write_str"
syn match wlKeyword "std:writeln"
syn match wlKeyword "std:yay"

syn match wlValue     '\$s'
syn match wlValue     '\$self'
syn match wlValue     '\$d'
syn match wlValue     '\$data'
syn match wlValue     '\$t'
syn match wlValue     '\$true'
syn match wlValue     '\$f'
syn match wlValue     '\$false'
syn match wlValue     '\$n'
syn match wlValue     '\$nul'
syn match wlValue     '\$e'
syn match wlValue     '\$error'
syn match wlRefData   '$@i'
syn match wlRefData   '$@int'
syn match wlRefData   '$@f'
syn match wlRefData   '$@float'
syn match wlRefData   '$@s'
syn match wlRefData   '$@string'
syn match wlRefData   '$@b'
syn match wlRefData   '$@bytes'
syn match wlRefData   '$@v'
syn match wlRefData   '$@vec'
syn match wlRefData   '$@m'
syn match wlRefData   '$@map'
syn match wlRefData   '$@@'
syn match wlRefData   '$+'
syn match wlRefData   '$&'
syn match wlRefData   '$&&'
syn match wlRefData   '$\*'
syn match wlValue     '[-+]\?\d\+'
syn match wlValue     '[-+]\?\d\+\.\d\+'
syn match wlValue     '[-+]\?0x[a-fA-F0-9]\+\(\.[a-fA-F0-9]\+\)\?'
syn match wlValue     '[-+]\?0b[01]\+\(\.[01]\+\)\?'
syn match wlValue     '[-+]\?0o[0-8]\+\(\.[0-8]\+\)\?'
syn match wlValue     '[-+]\?[0-9]\+r[0-9a-zA-Z]\+\(\.[0-9a-zA-Z]\+\)\?'

syn match wlFuncCombinators '|\?[|~]'

syn match wlStringSpec  /\\x[a-f0-9A-F][a-f0-9A-F]/  contained
syn match wlStringSpec  /\\["'\\nrt0]/               contained
syn match wlStringSpec  /\\u[a-f0-9A-F]\+/           contained
"
syn region wlString     start="\$q\z(.\)" end="\z1"
syn region wlString     start="\$q\["     end="\]"
syn region wlString     start="\$q("      end=")"
syn region wlString     start="\$q{"      end="}"

syn region wlQSymbol    start=+:"+      skip=+\\\\\|\\"+  end=+"+ contains=wlStringSpec
syn region wlString     start=+"+       skip=+\\\\\|\\"+  end=+"+ contains=wlStringSpec
syn region wlString     start=+\$b"+    skip=+\\\\\|\\"+  end=+"+ contains=wlStringSpec

syn match wlAssign   '\(^\|\s\+\|{\|;\)\@<=\.' nextgroup=wlAssignId,wlDestr
syn match wlDefine   '!'                       nextgroup=wlImport,wlExport,wlDefTag,wlAssignId,wlDestr
syn match wlDefTag   ':global' skipwhite skipnl nextgroup=wlAssignId contained
syn match wlImport   '@import' skipwhite skipnl nextgroup=wlAssignId contained
syn match wlExport   '@export' skipwhite skipnl nextgroup=wlAssignId contained
syn region wlDestr         matchgroup=wlDestrDelim start="(" end=")" transparent contained contains=wlIdentifier,wlComment
syn match wlArity     '|\s*\d\+\s*<\s*\d\+\s*|'
syn match wlArity     '|\s*\d\+\s*|'
syn match wlArity     '|\s*|'

syn region wlMap       matchgroup=wlRefData start="\${" end="}"     transparent contains=wlComment,wlRefData,wlValue,wlIdentifier,wlKeyword,wlKeyword2,wlRepeat,wlSymbol,wlQSymbol,wlString,wlArgList,wlFunc,wlFuncCombinators,wlList,wlMap,wlQuote,wlShortFunc,wlMapKeyId
syn region wlList      matchgroup=wlRefData start="\$\[" end="\]"   transparent contains=wlComment,wlRefData,wlValue,wlIdentifier,wlKeyword,wlKeyword2,wlRepeat,wlSymbol,wlQSymbol,wlString,wlArgList,wlFunc,wlFuncCombinators,wlList,wlMap,wlQuote,wlShortFunc
syn region wlQuote     matchgroup=wlExprQuote start="(" end=")"     transparent contains=wlComment,wlRefData,wlValue,wlIdentifier,wlKeyword,wlKeyword2,wlRepeat,wlSymbol,wlQSymbol,wlString,wlArgList,wlFunc,wlFuncCombinators,wlList,wlMap,wlQuote,wlShortFunc
syn region wlArgList   matchgroup=wlFuncDelims start="\[" end="\]"  transparent contains=wlComment,wlRefData,wlValue,wlIdentifier,wlKeyword,wlKeyword2,wlRepeat,wlSymbol,wlQSymbol,wlString,wlArgList,wlFunc,wlFuncCombinators,wlList,wlMap,wlQuote,wlShortFunc
syn region wlFunc      matchgroup=wlFuncDelims start="{" end="}"    transparent contains=wlComment,wlRefData,wlValue,wlIdentifier,wlKeyword,wlKeyword2,wlRepeat,wlSymbol,wlQSymbol,wlString,wlArgList,wlFunc,wlFuncCombinators,wlList,wlMap,wlQuote,wlShortFunc,wlAssign,wlDefine,wlArity
syn match wlShortFunc  '\\'                                                    nextgroup=wlComment,wlRefData,wlValue,wlIdentifier,wlKeyword,wlKeyword2,wlRepeat,wlSymbol,wlQSymbol,wlString,wlArgList,wlFunc,wlFuncCombinators,wlList,wlMap,wlQuote,wlShortFunc,wlAssign,wlDefine,wlArity

hi def link wlKeyword           Function
hi def link wlKeyword2          Function

hi def link wlArgList           Function
hi def link wlFuncDelims        Function
hi def link wlShortFunc         Function
hi def link wlFuncCombinators   Function
hi def link wlExprQuote         Normal

hi def link wlRepeat        Repeat
hi def link wlAssign        Statement
hi def link wlDefine        Statement
hi def link wlDestrDelim    Statement

hi def link wlValue         Constant

hi def link wlError         PreProc
hi def link wlImport        PreProc
hi def link wlExport        PreProc
hi def link wlString        String
hi def link wlStringSpec    Special
hi def link wlSymbol        Special
hi def link wlQSymbol       Special
hi def link wlAssignId      Special
hi def link wlMapKeyId      Special
hi def link wlRefData       Structure
hi def link wlDefTag        Type
hi def link wlArity         Type
hi def link wlSymbolSpec    Constant
hi def link wlIdentifier    Normal
hi def link wlComment       Comment


"" no '.'
"setl iskeyword=33,35-39,42-45,47-58,60-90,94,95,97-122,126
"setl lispwords+=do-each,for,$define!
"
"syn match lalError "[^ `'\t\n()\[\]";]\+"
"syn match lalError "[)\]]"
"
"syn match lalTodo /TODO/    contained
"syn match lalTodo /FIXME/   contained
"syn match lalTodo /XXX/     contained
"
"syn region lalQuote matchgroup=lalData start=/'[`']*/ end=/[ \t\n()\[\]";]/me=e-1
"syn region lalQuote matchgroup=lalData start=/'['`]*"/ skip=/\\[\\"]/ end=/"/
"syn region lalQuote matchgroup=lalData start=/'['`]*|/ skip=/\\[\\|]/ end=/|/
"syn region lalQuote matchgroup=lalData start=/'['`]*#\?(/ end=/)/ contains=ALLBUT,lalQuasiquote,lalQuasiquoteForm,lalUnquote,lalForm,lalSyntax,lalFunction,lalKeyword,lalExtraSyntax,lalSyntaxSyntax,lalTypeSyntax,lalDatumCommentForm
"
"syn region lalQuasiquote matchgroup=lalData start=/`['`]*/ end=/[ \t\n()\[\]";]/me=e-1
"syn region lalQuasiquote matchgroup=lalData start=/`['`]*#\?(/ end=/)/ contains=ALLBUT,lalQuote,lalQuoteForm,lalForm,lalSyntax,lalFunction,lalKeyword,lalExtraSyntax,lalSyntaxSyntax,lalTypeSyntax,lalDatumCommentForm
"
"syn region lalUnquote matchgroup=lalParentheses start=/,/ end=/[ `'\t\n\[\]()";]/me=e-1 contained contains=ALLBUT,lalDatumCommentForm
"syn region lalUnquote matchgroup=lalParentheses start=/,@/ end=/[ `'\t\n\[\]()";]/me=e-1 contained contains=ALLBUT,lalDatumCommentForm
"syn region lalUnquote matchgroup=lalParentheses start=/,(/ end=/)/ contained contains=ALLBUT,lalDatumCommentForm
"syn region lalUnquote matchgroup=lalParentheses start=/,@(/ end=/)/ contained contains=ALLBUT,lalDatumCommentForm
"
"syn region lalQuoteForm      matchgroup=lalData start=/(/ end=/)/ contained contains=ALLBUT,lalQuasiquote,lalQuasiquoteForm,lalUnquote,lalForm,lalSyntax,lalFunction,lalKeyword,lalExtraSyntax,lalSyntaxSyntax,lalTypeSyntax,lalDatumCommentForm
"syn region lalQuasiquoteForm matchgroup=lalData start=/(/ end=/)/ contained contains=ALLBUT,lalQuote,lalForm,lalSyntax,lalFunction,lalKeyword,lalExtraSyntax,lalSyntaxSyntax,lalTypeSyntax,lalDatumCommentForm
"
""syn keyword lalSyntax @
""syn keyword lalSyntax @!
""syn keyword lalSyntax $
""syn keyword lalSyntax $!
""syn keyword lalSyntax $^!
""syn keyword lalSyntax @^!
"
"syn match lalIdentifier  /[a-zA-Z0-9!$%&*+\-/<=>?@^_~#]\+\([a-zA-Z0-9!$%&*+\-/:<=>?@^_~#]\+[a-zA-Z0-9!$%&*+\-/<=>?@^_~#]\+\)\?/
"syn match lalKeyword  /\(:[a-zA-Z0-9!$%&*+\-/:<=>?@^_~#]\+\|[a-zA-Z0-9!$%&*+\-/:<=>?@^_~#]\+:\>\)/
"
"syn region lalString          start=/\(\\\)\@<!"/ skip=/\\[\\"]/ end=/"/
"syn region lalString          start=+#q\z(.\)+    skip=+\\\z1+   end=+\z1+
"syn region lalMultilineString start=+#<#\z(\I\i*\).*+            end=+^\z1+
"syn region lalMultilineString start=+#<<\z(\I\i*\).*+            end=+^\z1+
"syn region lalSymbol          start=/\(\\\)\@<!|/ skip=/\\[\\|]/ end=/|/
"
"syn match lalNumber /\(#[dbeiox]\)*[+\-]*\([0-9]\|inf.0\|nan.0\)[0-9a-fA-F+\-@\.ilns]*/
"
"syn match lalBoolean /#t\(rue\)\?/
"syn match lalBoolean /#f\(alse\)\?/
"
"syn match lalEmptyList /nil/
"
"syn match lalCharacter /#\\.[^ `'\t\n\[\]()]*/
"syn match lalCharacter /#\\x[0-9a-fA-F]\+/
"
"syn match lalComment /;.*$/ contains=lalTodo
"syn match lalComment /#!.*$/ contains=lalTodo
"
"syn region lalMultilineComment start=/#|/ end=/|#/ contains=lalTodo,lalMultilineComment
"
"syn region lalForm matchgroup=lalParentheses start="(" end=")" contains=ALLBUT,lalUnquote,lalDatumCommentForm
"syn region lalForm matchgroup=lalParentheses start="\[" end="\]" contains=ALLBUT,lalUnquote,lalDatumCommentForm
"
"syn region lalVector matchgroup=lalData start="#(" end=")"          contains=ALLBUT,lalQuasiquote,lalQuasiquoteForm,lalUnquote,lalForm,lalSyntax,lalFunction,lalKeyword,lalExtraSyntax,lalSyntaxSyntax,lalTypeSyntax,lalDatumCommentForm
"syn region lalVector matchgroup=lalData start="#[fsu]\d\+(" end=")" contains=lalNumber,lalError
"
"syn region lalDatumComment matchgroup=lalDatumComment start=/#;[ \t\n`']*/ end=/[ \t\n()\[\]";]/me=e-1
"syn region lalDatumComment matchgroup=lalDatumComment start=/#;[ \t\n`']*"/ skip=/\\[\\"]/ end=/"/
"syn region lalDatumComment matchgroup=lalDatumComment start=/#;[ \t\n`']*|/ skip=/\\[\\|]/ end=/|/
"syn region lalDatumComment matchgroup=lalDatumComment start=/#;[ \t\n`']*\(#\([usf]\d\+\)\?\)\?(/ end=/)/ contains=lalDatumCommentForm,lalTodo
"syn region lalDatumCommentForm start="(" end=")" contained contains=lalDatumCommentForm,lalTodo
"
"syn keyword lalLibrarySyntax define-library
"syn keyword lalLibrarySyntax export
"syn keyword lalLibrarySyntax import
"syn keyword lalLibrarySyntax include
"syn keyword lalLibrarySyntax include-ci
"syn keyword lalLibrarySyntax include-library-declarations
"syn keyword lalLibrarySyntax library
"syn keyword lalLibrarySyntax only
"syn keyword lalLibrarySyntax prefix
"syn keyword lalLibrarySyntax rename
"syn keyword lalLibrarySyntax srfi
"syn keyword lalLibrarySyntax cond-expand
"
"syn keyword lalLibrarySyntax define-builtin
"syn keyword lalSyntaxSyntax define-syntax-translator
"
"syn keyword lalSyntaxSyntax define-syntax
"syn keyword lalSyntaxSyntax let-syntax
"syn keyword lalSyntaxSyntax letrec-syntax
"syn keyword lalSyntaxSyntax syntax-rules
"
"syn match lalSyntax /\(\$define\!\)/
"syn match lalSyntax /\.\.\?/
"syn match lalKeyword /\.\@<=[ ]*\([^ \[\]()\t\n]*\)/
"
"syn keyword lalSyntax =>
"syn keyword lalSyntax and
"syn keyword lalSyntax begin
"syn keyword lalSyntax case
"syn keyword lalSyntax case-lambda
"syn keyword lalSyntax cond
"syn keyword lalSyntax define
"syn keyword lalSyntax define-record-type
"syn keyword lalSyntax define-values
"syn keyword lalSyntax delay
"syn keyword lalSyntax delay-force
"syn keyword lalSyntax do
"syn keyword lalSyntax do-each
"syn keyword lalSyntax else
"syn keyword lalSyntax for
"syn keyword lalSyntax guard
"syn keyword lalSyntax if
"syn keyword lalSyntax lambda
"syn keyword lalSyntax let
"syn keyword lalSyntax let*
"syn keyword lalSyntax let*-values
"syn keyword lalSyntax let-values
"syn keyword lalSyntax letrec
"syn keyword lalSyntax letrec*
"syn keyword lalSyntax or
"syn keyword lalSyntax parameterize
"syn keyword lalSyntax quasiquote
"syn keyword lalSyntax quote
"syn keyword lalSyntax set!
"syn keyword lalSyntax unless
"syn keyword lalSyntax unquote
"syn keyword lalSyntax unquote-splicing
"syn keyword lalSyntax when
"syn keyword lalSyntax return
"syn keyword lalSyntax with-cleanup
"
"syn match lalFunction /\(@\!\?\)/
"syn keyword lalFunction *
"syn keyword lalFunction +
"syn keyword lalFunction -
"syn keyword lalFunction /
"syn keyword lalFunction <
"syn keyword lalFunction <=
"syn keyword lalFunction =
"syn keyword lalFunction >
"syn keyword lalFunction >=
"syn keyword lalFunction ?doc
"syn keyword lalFunction abs
"syn keyword lalFunction acos
"syn keyword lalFunction acos 
"syn keyword lalFunction angle
"syn keyword lalFunction append
"syn keyword lalFunction apply
"syn keyword lalFunction asin
"syn keyword lalFunction assoc
"syn keyword lalFunction assq
"syn keyword lalFunction assv
"syn keyword lalFunction atan
"syn keyword lalFunction binary-port?
"syn keyword lalFunction boolean=?
"syn keyword lalFunction boolean?
"syn keyword lalFunction bytevector
"syn keyword lalFunction bytevector-append
"syn keyword lalFunction bytevector-append 
"syn keyword lalFunction bytevector-copy
"syn keyword lalFunction bytevector-copy!
"syn keyword lalFunction bytevector-length
"syn keyword lalFunction bytevector-u8-ref
"syn keyword lalFunction bytevector-u8-set!
"syn keyword lalFunction bytevector?
"syn keyword lalFunction caaaar
"syn keyword lalFunction caaadr
"syn keyword lalFunction caaar
"syn keyword lalFunction caadar
"syn keyword lalFunction caaddr
"syn keyword lalFunction caadr
"syn keyword lalFunction caar
"syn keyword lalFunction cadaar
"syn keyword lalFunction cadadr
"syn keyword lalFunction cadar
"syn keyword lalFunction caddar
"syn keyword lalFunction cadddr
"syn keyword lalFunction caddr
"syn keyword lalFunction cadr
"syn keyword lalFunction call-with-current-continuation
"syn keyword lalFunction call-with-input-file
"syn keyword lalFunction call-with-output-file
"syn keyword lalFunction call-with-port
"syn keyword lalFunction call-with-values
"syn keyword lalFunction call/cc
"syn keyword lalFunction car
"syn keyword lalFunction cdaaar
"syn keyword lalFunction cdaadr
"syn keyword lalFunction cdaar
"syn keyword lalFunction cdadar
"syn keyword lalFunction cdaddr
"syn keyword lalFunction cdadr
"syn keyword lalFunction cdar
"syn keyword lalFunction cddaar
"syn keyword lalFunction cddadr
"syn keyword lalFunction cddar
"syn keyword lalFunction cdddar
"syn keyword lalFunction cddddr
"syn keyword lalFunction cdddr
"syn keyword lalFunction cddr
"syn keyword lalFunction cdr
"syn keyword lalFunction ceiling
"syn keyword lalFunction char->integer
"syn keyword lalFunction char-alphabetic?
"syn keyword lalFunction char-ci<=?
"syn keyword lalFunction char-ci<?
"syn keyword lalFunction char-ci=?
"syn keyword lalFunction char-ci>=?
"syn keyword lalFunction char-ci>?
"syn keyword lalFunction char-downcase
"syn keyword lalFunction char-foldcase
"syn keyword lalFunction char-lower-case?
"syn keyword lalFunction char-numeric?
"syn keyword lalFunction char-ready?
"syn keyword lalFunction char-upcase
"syn keyword lalFunction char-upper-case?
"syn keyword lalFunction char-whitespace?
"syn keyword lalFunction char<=?
"syn keyword lalFunction char<?
"syn keyword lalFunction char=?
"syn keyword lalFunction char>=?
"syn keyword lalFunction char>?
"syn keyword lalFunction char?
"syn keyword lalFunction close-input-port
"syn keyword lalFunction close-output-port
"syn keyword lalFunction close-port
"syn keyword lalFunction command-line
"syn keyword lalFunction complex?
"syn keyword lalFunction concat!
"syn keyword lalFunction concat
"syn keyword lalFunction cons
"syn keyword lalFunction cos
"syn keyword lalFunction current-error-port
"syn keyword lalFunction current-input-port
"syn keyword lalFunction current-jiffy
"syn keyword lalFunction current-output-port
"syn keyword lalFunction current-second
"syn keyword lalFunction delete-file
"syn keyword lalFunction denominator
"syn keyword lalFunction digit-value
"syn keyword lalFunction display
"syn keyword lalFunction displayln
"syn keyword lalFunction dynamic-wind
"syn keyword lalFunction emergency-exit
"syn keyword lalFunction environment
"syn keyword lalFunction eof-object
"syn keyword lalFunction eof-object?
"syn keyword lalFunction empty?
"syn keyword lalFunction eq?
"syn keyword lalFunction equal?
"syn keyword lalFunction eqv?
"syn keyword lalFunction error
"syn keyword lalFunction error-object-irritants
"syn keyword lalFunction error-object-message
"syn keyword lalFunction error-object?
"syn keyword lalFunction eval
"syn keyword lalFunction even?
"syn keyword lalFunction exact
"syn keyword lalFunction exact->inexact
"syn keyword lalFunction exact-integer-sqrt
"syn keyword lalFunction exact-integer?
"syn keyword lalFunction exact?
"syn keyword lalFunction exit
"syn keyword lalFunction exp
"syn keyword lalFunction expt
"syn keyword lalFunction features
"syn keyword lalFunction file-error?
"syn keyword lalFunction file-exists?
"syn keyword lalFunction finite?
"syn keyword lalFunction first
"syn keyword lalFunction floor
"syn keyword lalFunction floor-quotient
"syn keyword lalFunction floor-remainder
"syn keyword lalFunction floor/
"syn keyword lalFunction flush-output-port
"syn keyword lalFunction for-each
"syn keyword lalFunction force
"syn keyword lalFunction gcd
"syn keyword lalFunction get-environment-variable
"syn keyword lalFunction get-environment-variables
"syn keyword lalFunction get-output-bytevector
"syn keyword lalFunction get-output-string
"syn keyword lalFunction imag-part
"syn keyword lalFunction inexact
"syn keyword lalFunction inexact->exact
"syn keyword lalFunction inexact?
"syn keyword lalFunction infinite?
"syn keyword lalFunction input-port-open?
"syn keyword lalFunction input-port?
"syn keyword lalFunction integer->char
"syn keyword lalFunction integer?
"syn keyword lalFunction interaction-environment
"syn keyword lalFunction jiffies-per-second
"syn keyword lalFunction keyword->string
"syn keyword lalFunction last
"syn keyword lalFunction lcm
"syn keyword lalFunction length
"syn keyword lalFunction list
"syn keyword lalFunction list->string
"syn keyword lalFunction list->vector
"syn keyword lalFunction list-copy
"syn keyword lalFunction list-ref
"syn keyword lalFunction list-set!
"syn keyword lalFunction list-tail
"syn keyword lalFunction list?
"syn keyword lalFunction load
"syn keyword lalFunction log
"syn keyword lalFunction magnitude
"syn keyword lalFunction make-bytevector
"syn keyword lalFunction make-list
"syn keyword lalFunction make-parameter
"syn keyword lalFunction make-polar
"syn keyword lalFunction make-promise
"syn keyword lalFunction make-rectangular
"syn keyword lalFunction make-string
"syn keyword lalFunction make-vector
"syn keyword lalFunction map
"syn keyword lalFunction max
"syn keyword lalFunction member
"syn keyword lalFunction memq
"syn keyword lalFunction memv
"syn keyword lalFunction min
"syn keyword lalFunction modulo
"syn keyword lalFunction nan?
"syn keyword lalFunction negative?
"syn keyword lalFunction newline
"syn keyword lalFunction nil?
"syn keyword lalFunction not
"syn keyword lalFunction null-environment
"syn keyword lalFunction null?
"syn keyword lalFunction number->string
"syn keyword lalFunction number?
"syn keyword lalFunction numerator
"syn keyword lalFunction odd?
"syn keyword lalFunction open-binary-input-file
"syn keyword lalFunction open-binary-output-file
"syn keyword lalFunction open-input-bytevector
"syn keyword lalFunction open-input-file
"syn keyword lalFunction open-input-string
"syn keyword lalFunction open-output-bytevector
"syn keyword lalFunction open-output-file
"syn keyword lalFunction open-output-string
"syn keyword lalFunction output-port-open?
"syn keyword lalFunction output-port?
"syn keyword lalFunction pair?
"syn keyword lalFunction peek-char
"syn keyword lalFunction peek-u8
"syn keyword lalFunction port?
"syn keyword lalFunction positive?
"syn keyword lalFunction push!
"syn keyword lalFunction pop!
"syn keyword lalFunction procedure?
"syn keyword lalFunction promise?
"syn keyword lalFunction quotient
"syn keyword lalFunction raise
"syn keyword lalFunction raise-continuable
"syn keyword lalFunction rational?
"syn keyword lalFunction rationalize
"syn keyword lalFunction read
"syn keyword lalFunction read-bytevector
"syn keyword lalFunction read-bytevector!
"syn keyword lalFunction read-char
"syn keyword lalFunction read-error?
"syn keyword lalFunction read-line
"syn keyword lalFunction read-string
"syn keyword lalFunction read-u8
"syn keyword lalFunction real-part
"syn keyword lalFunction real?
"syn keyword lalFunction remainder
"syn keyword lalFunction reverse
"syn keyword lalFunction round
"syn keyword lalFunction scheme-report-environment
"syn keyword lalFunction set-car!
"syn keyword lalFunction set-cdr!
"syn keyword lalFunction shift!
"syn keyword lalFunction sin
"syn keyword lalFunction sqrt
"syn keyword lalFunction square
"syn keyword lalFunction str
"syn keyword lalFunction str-join
"syn keyword lalFunction string
"syn keyword lalFunction string->keyword
"syn keyword lalFunction string->list
"syn keyword lalFunction string->number
"syn keyword lalFunction string->symbol
"syn keyword lalFunction string->utf8
"syn keyword lalFunction string->vector
"syn keyword lalFunction string-append
"syn keyword lalFunction string-ci<=?
"syn keyword lalFunction string-ci<?
"syn keyword lalFunction string-ci=?
"syn keyword lalFunction string-ci>=?
"syn keyword lalFunction string-ci>?
"syn keyword lalFunction string-copy
"syn keyword lalFunction string-copy!
"syn keyword lalFunction string-downcase
"syn keyword lalFunction string-fill!
"syn keyword lalFunction string-foldcase
"syn keyword lalFunction string-for-each
"syn keyword lalFunction string-length
"syn keyword lalFunction string-map
"syn keyword lalFunction string-ref
"syn keyword lalFunction string-set!
"syn keyword lalFunction string-upcase
"syn keyword lalFunction string<=?
"syn keyword lalFunction string<?
"syn keyword lalFunction string=?
"syn keyword lalFunction string>=?
"syn keyword lalFunction string>?
"syn keyword lalFunction string?
"syn keyword lalFunction substring
"syn keyword lalFunction symbol->string
"syn keyword lalFunction symbol=?
"syn keyword lalFunction symbol?
"syn keyword lalFunction syntax-error
"syn keyword lalFunction tan
"syn keyword lalFunction textual-port?
"syn keyword lalFunction transcript-off
"syn keyword lalFunction transcript-on
"syn keyword lalFunction truncate
"syn keyword lalFunction truncate-quotient
"syn keyword lalFunction truncate-remainder
"syn keyword lalFunction truncate/
"syn keyword lalFunction type
"syn keyword lalFunction u8-ready?
"syn keyword lalFunction utf8->string
"syn keyword lalFunction unshift!
"syn keyword lalFunction values
"syn keyword lalFunction vector
"syn keyword lalFunction vector->list
"syn keyword lalFunction vector->string
"syn keyword lalFunction vector-append
"syn keyword lalFunction vector-copy
"syn keyword lalFunction vector-copy!
"syn keyword lalFunction vector-fill!
"syn keyword lalFunction vector-for-each
"syn keyword lalFunction vector-length
"syn keyword lalFunction vector-map
"syn keyword lalFunction vector-ref
"syn keyword lalFunction vector-set!
"syn keyword lalFunction vector?
"syn keyword lalFunction with-exception-handler
"syn keyword lalFunction with-input-from-file
"syn keyword lalFunction with-output-to-file
"syn keyword lalFunction write
"syn keyword lalFunction writeln
"syn keyword lalFunction write-bytevector
"syn keyword lalFunction write-char
"syn keyword lalFunction write-shared
"syn keyword lalFunction write-simple
"syn keyword lalFunction write-string
"syn keyword lalFunction write-u8
"syn keyword lalFunction write-str
"syn keyword lalFunction zero?
"
"hi def link lalBoolean          Boolean
"hi def link lalCharacter        Character
"hi def link lalComment          Comment
"hi def link lalConstant         Constant
"hi def link lalEmptyList        Constant
"hi def link lalData             Delimiter
"hi def link lalDatumComment     Comment
"hi def link lalDatumCommentForm Comment
"hi def link lalDelimiter        Delimiter
"hi def link lalError            Error
"hi def link lalExtraSyntax      Underlined
"hi def link lalFunction         Function
"hi def link lalIdentifier       Normal
"hi def link lalKeyword          Constant
"hi def link lalLibrarySyntax    PreProc
"hi def link lalMultilineComment Comment
"hi def link lalNumber           Number
"hi def link lalParentheses      Normal
"hi def link lalQuasiquote       Delimiter
"hi def link lalQuote            Delimiter
"hi def link lalSpecialSyntax    Special
"hi def link lalString           String
"hi def link lalMultilineString  String
"hi def link lalSymbol           Normal
"hi def link lalSyntax           Statement
"hi def link lalSyntaxSyntax     PreProc
"hi def link lalTypeSyntax       Type
"hi def link lalTodo             Todo
"
"" sync on a line starting with a ( ... ) form
"syn sync match matchPlace grouphere NONE "^("
syn sync lines=500
""syn sync ccomment lalMultilineComment

let b:current_syntax = "wlambda"