mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 01:44:37 +00:00
73 lines
1.1 KiB
Nim
73 lines
1.1 KiB
Nim
discard """
|
|
output: '''[0.0, 0.0, 0.0]
|
|
|
|
[0.0, 0.0, 0.0, 0.0]
|
|
|
|
5050
|
|
123'''
|
|
"""
|
|
|
|
template mathPerComponent(op: untyped): untyped =
|
|
proc op*[N,T](v,u: array[N,T]): array[N,T] {.inline.} =
|
|
for i in 0 ..< len(result):
|
|
result[i] = `*`(v[i], u[i])
|
|
|
|
mathPerComponent(`***`)
|
|
# bug #5285
|
|
when true:
|
|
if isMainModule:
|
|
var v1: array[3, float64]
|
|
var v2: array[3, float64]
|
|
echo repr(v1 *** v2)
|
|
|
|
|
|
proc foo(): void =
|
|
var v1: array[4, float64]
|
|
var v2: array[4, float64]
|
|
echo repr(v1 *** v2)
|
|
|
|
foo()
|
|
|
|
# bug #5383
|
|
import sequtils
|
|
|
|
proc zipWithIndex[A](ts: seq[A]): seq[(int, A)] =
|
|
toSeq(pairs(ts))
|
|
|
|
proc main =
|
|
discard zipWithIndex(@["foo", "bar"])
|
|
discard zipWithIndex(@[1, 2])
|
|
discard zipWithIndex(@[true, false])
|
|
|
|
main()
|
|
|
|
# bug #5405
|
|
|
|
proc main2() =
|
|
let s = toSeq(1..100).foldL(a + b)
|
|
echo s
|
|
|
|
main2()
|
|
|
|
# bug #5467
|
|
import macros
|
|
|
|
converter int2string(x: int): string = $x
|
|
|
|
template wrap(body: typed): untyped =
|
|
body
|
|
|
|
macro makeProc(): typed =
|
|
# Make a template tree
|
|
result = quote do:
|
|
proc someProc* =
|
|
wrap do:
|
|
let x = 123
|
|
# Implicit conversion here
|
|
let s: string = x
|
|
echo s
|
|
|
|
makeProc()
|
|
|
|
someProc()
|