lists.nbt 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. let xs = [1, 2, 3]
  2. assert_eq(len([]), 0)
  3. assert_eq(len(xs), 3)
  4. assert_eq(head(xs), 1)
  5. assert_eq(head(tail(xs)), 2)
  6. assert_eq(tail(xs), [2, 3])
  7. assert_eq(cons(0, xs), [0, 1, 2, 3])
  8. assert(is_empty([]))
  9. assert(!is_empty(xs))
  10. assert_eq(concat([], []), [])
  11. assert_eq(concat([], xs), xs)
  12. assert_eq(concat(xs, []), xs)
  13. assert_eq(concat(xs, xs), [1, 2, 3, 1, 2, 3])
  14. assert_eq(take(0, xs), [])
  15. assert_eq(take(1, xs), [1])
  16. assert_eq(take(2, xs), [1, 2])
  17. assert_eq(take(3, xs), [1, 2, 3])
  18. assert_eq(take(4, xs), [1, 2, 3])
  19. assert_eq(take(0, []), [])
  20. assert_eq(drop(0, xs), [1, 2, 3])
  21. assert_eq(drop(1, xs), [2, 3])
  22. assert_eq(drop(2, xs), [3])
  23. assert_eq(drop(3, xs), [])
  24. assert_eq(drop(4, xs), [])
  25. assert_eq(drop(0, []), [])
  26. assert_eq(range(0, 0), [0])
  27. assert_eq(range(0, 5), [0, 1, 2, 3, 4, 5])
  28. assert_eq(reverse([]), [])
  29. assert_eq(reverse(xs), [3, 2, 1])
  30. fn inc(x) = x + 1
  31. assert_eq(map(inc, xs), [2, 3, 4])
  32. fn is_even(x) = mod(x, 2) == 0
  33. assert_eq(filter(is_even, range(1, 10)), [2, 4, 6, 8, 10])
  34. fn mul(x, y) = x * y
  35. assert_eq(foldl(mul, 1, [1, 2, 3, 4, 5]), 120)
  36. # sort:
  37. assert_eq(sort([]), [])
  38. assert_eq(sort([1]), [1])
  39. assert_eq(sort([1, 2]), [1, 2])
  40. assert_eq(sort([2, 1]), [1, 2])
  41. assert_eq(sort([1, 2, 3]), [1, 2, 3])
  42. assert_eq(sort([1, 3, 2]), [1, 2, 3])
  43. assert_eq(sort([2, 1, 3]), [1, 2, 3])
  44. assert_eq(sort([2, 3, 1]), [1, 2, 3])
  45. assert_eq(sort([3, 1, 2]), [1, 2, 3])
  46. assert_eq(sort([3, 2, 1]), [1, 2, 3])
  47. # sort_by_key:
  48. fn negate(x) = -x
  49. assert_eq(sort_by_key(negate, [1, 2, 3]), [3, 2, 1])
  50. assert_eq(sort_by_key(str_length, ["aa", "", "aaaa", "aaa"]), ["", "aa", "aaa", "aaaa"])
  51. assert_eq(intersperse(0, []), [])
  52. assert_eq(intersperse(0, [1]), [1])
  53. assert_eq(intersperse(0, [1, 2, 3]), [1, 0, 2, 0, 3])
  54. assert_eq(sum([1, 2, 3, 4, 5]), 15)
  55. assert_eq(sum([1 m, 200 cm, 3 m]), 6 m)
  56. assert_eq(linspace(0, 1, 2), [0, 1])
  57. assert_eq(linspace(0, 1, 5), [0, 0.25, 0.5, 0.75, 1])
  58. assert_eq(linspace(0, 2 m, 5), [0 m, 0.5 m, 1 m, 1.5 m, 2 m])
  59. assert_eq(split("", ","), [])
  60. assert_eq(split("a", ","), ["a"])
  61. assert_eq(split("a,b,c", ","), ["a", "b", "c"])
  62. assert_eq(split("foo,bar,baz", ","), ["foo", "bar", "baz"])
  63. assert_eq(join([], ","), "")
  64. assert_eq(join(["a"], ","), "a")
  65. assert_eq(join(["a", "b", "c"], ","), "a,b,c")
  66. assert_eq(join(["foo", "bar", "baz"], ","), "foo,bar,baz")
  67. # Non-dtype lists
  68. let words = ["hello", "world"]
  69. assert_eq(head(words), "hello")
  70. fn gen_range(n) = range(1, n)
  71. assert_eq(map(gen_range, xs), [[1], [1, 2], [1, 2, 3]])
  72. fn to_string(x) = "{x}"
  73. assert_eq(map(to_string, xs), ["1", "2", "3"])