View difference between Paste ID: xT7Ge6fC and gMqBtweD
SHOW: | | - or go back to the newest paste.
1-
proc first(arr: openArray[int]): int = arr[0]
1+
template cut(s: string, left: Natural = 0, right: Natural = 0): string = 
2
  s[left .. ^(right + 1)]
3-
proc addone[T](arr: array[T, int]): array[T, int] =
3+
4-
  for i, v in arr:
4+
echo cut("Hello World", right = 6)
5-
    result[i] = v + 1
5+
echo cut("Hello World", left = 6)
6
echo cut("Hello World", left = 4, right = 4)
7-
proc main =
7+
8-
  let a = [0, 1, 2, 3]
8+
#[
9
>nim c -r strslice.nim
10-
  # All the followings are correct and equivalent
10+
Hint: used config file 'C:\Program Files\Nim\config\nim.cfg' [Conf]
11-
  let
11+
Hint: used config file 'C:\Users\Fredrik\AppData\Roaming\nim.cfg' [Conf]
12-
    b = first(a)
12+
Hint: system [Processing]
13-
    c = a.first()
13+
Hint: strslice [Processing]
14-
    d = a.first
14+
strslice.nim(4, 9) Error: type mismatch: got (string, Slice[system.Natural])
15
but expected one of:
16-
  # Chaining
16+
proc `[]`[Idx, T](a: array[Idx, T]; x: Slice[Idx]): seq[T]
17-
  let e = a.addone().addone()
17+
proc `[]`(s: string; x: Slice[int]): string
18
proc `[]`[T](s: seq[T]; x: Slice[int]): seq[T]
19
proc `[]`[I: Ordinal, T](a: T; i: I): T
20
proc `[]`[Idx, T](a: array[Idx, T]; x: Slice[int]): seq[T]
21
]#