lists.nbt 2.6 KB

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