This commit is contained in:
		@@ -15,25 +15,25 @@ pub type DLList(a) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn main() {
 | 
			
		||||
  let l = new()
 | 
			
		||||
  let l2 = insert(l, 123) |> echo
 | 
			
		||||
  let l3 = insert(l2, 456) |> echo
 | 
			
		||||
  let l4 = insert(l3, 789)
 | 
			
		||||
  let l5 = insert(l4, 0)
 | 
			
		||||
  // let l = new()
 | 
			
		||||
  // let l2 = insert(l, 123) |> echo
 | 
			
		||||
  // let l3 = insert(l2, 456) |> echo
 | 
			
		||||
  // let l4 = insert(l3, 789)
 | 
			
		||||
  // let l5 = insert(l4, 0)
 | 
			
		||||
 | 
			
		||||
  get(l5) |> echo
 | 
			
		||||
  l5 |> echo
 | 
			
		||||
  l5 |> to_list |> echo
 | 
			
		||||
  let l6 = delete(l5)
 | 
			
		||||
  l6 |> echo
 | 
			
		||||
  let l7 = delete(l6)
 | 
			
		||||
  l7 |> echo
 | 
			
		||||
  let l8 = delete(l7)
 | 
			
		||||
  l8 |> echo
 | 
			
		||||
  let l9 = delete(l8)
 | 
			
		||||
  l9 |> echo
 | 
			
		||||
  // get(l5) |> echo
 | 
			
		||||
  // l5 |> echo
 | 
			
		||||
  // l5 |> to_list |> echo
 | 
			
		||||
  // let l6 = delete(l5)
 | 
			
		||||
  // l6 |> echo
 | 
			
		||||
  // let l7 = delete(l6)
 | 
			
		||||
  // l7 |> echo
 | 
			
		||||
  // let l8 = delete(l7)
 | 
			
		||||
  // l8 |> echo
 | 
			
		||||
  // let l9 = delete(l8)
 | 
			
		||||
  // l9 |> echo
 | 
			
		||||
 | 
			
		||||
  from_list([1, 2, 3, 4]) |> echo
 | 
			
		||||
  // from_list([1, 2, 3, 4]) |> echo
 | 
			
		||||
 | 
			
		||||
  let l1 = new() |> insert(1)
 | 
			
		||||
  l1 |> echo
 | 
			
		||||
@@ -43,6 +43,13 @@ pub fn main() {
 | 
			
		||||
  l2 |> echo
 | 
			
		||||
  let l2t = take(l2, 5)
 | 
			
		||||
  l2t |> echo
 | 
			
		||||
 | 
			
		||||
  let l3 = insert(l2, 3)
 | 
			
		||||
  l3 |> echo
 | 
			
		||||
  let l3t = take(l3, 7)
 | 
			
		||||
  l3t |> echo
 | 
			
		||||
  let l3t2 = take_rev(l3, 7)
 | 
			
		||||
  l3t2 |> echo
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn new() -> DLList(a) {
 | 
			
		||||
@@ -210,6 +217,21 @@ fn take_loop(list: DLList(a), n_times: Int, acc: List(a)) -> List(a) {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn take_rev(list: DLList(a), n_times: Int) -> List(a) {
 | 
			
		||||
  take_rev_loop(list, n_times, [])
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn take_rev_loop(list: DLList(a), n_times: Int, acc: List(a)) -> List(a) {
 | 
			
		||||
  use <- bool.guard(when: is_empty(list), return: [])
 | 
			
		||||
  case n_times {
 | 
			
		||||
    0 -> list.reverse(acc)
 | 
			
		||||
    n -> {
 | 
			
		||||
      let assert Ok(item) = get(list)
 | 
			
		||||
      take_rev_loop(move_left(list), n - 1, [item, ..acc])
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn to_list(list: DLList(a)) -> List(a) {
 | 
			
		||||
  case is_empty(list) {
 | 
			
		||||
    True -> []
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user