36 lines
621 B
Nim
36 lines
621 B
Nim
discard """
|
|
output: '''true true false yes'''
|
|
"""
|
|
|
|
proc IsVoid[T](): string =
|
|
when T is void:
|
|
result = "yes"
|
|
else:
|
|
result = "no"
|
|
|
|
const x = int is int
|
|
echo x, " ", float is float, " ", float is string, " ", IsVoid[void]()
|
|
|
|
template yes(e: expr): stmt =
|
|
static: assert e
|
|
|
|
template no(e: expr): stmt =
|
|
static: assert(not e)
|
|
|
|
var s = @[1, 2, 3]
|
|
|
|
yes s.items is iterator
|
|
no s.items is proc
|
|
|
|
yes s.items is iterator: int
|
|
no s.items is iterator: float
|
|
|
|
yes s.items is iterator: TNumber
|
|
no s.items is iterator: object
|
|
|
|
type
|
|
Iter[T] = iterator: T
|
|
|
|
yes s.items is Iter[TNumber]
|
|
no s.items is Iter[float]
|
|
|