This commit is contained in:
		@@ -15,25 +15,25 @@ pub type DLList(a) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub fn main() {
 | 
					pub fn main() {
 | 
				
			||||||
  let l = new()
 | 
					  // let l = new()
 | 
				
			||||||
  let l2 = insert(l, 123) |> echo
 | 
					  // let l2 = insert(l, 123) |> echo
 | 
				
			||||||
  let l3 = insert(l2, 456) |> echo
 | 
					  // let l3 = insert(l2, 456) |> echo
 | 
				
			||||||
  let l4 = insert(l3, 789)
 | 
					  // let l4 = insert(l3, 789)
 | 
				
			||||||
  let l5 = insert(l4, 0)
 | 
					  // let l5 = insert(l4, 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get(l5) |> echo
 | 
					  // get(l5) |> echo
 | 
				
			||||||
  l5 |> echo
 | 
					  // l5 |> echo
 | 
				
			||||||
  l5 |> to_list |> echo
 | 
					  // l5 |> to_list |> echo
 | 
				
			||||||
  let l6 = delete(l5)
 | 
					  // let l6 = delete(l5)
 | 
				
			||||||
  l6 |> echo
 | 
					  // l6 |> echo
 | 
				
			||||||
  let l7 = delete(l6)
 | 
					  // let l7 = delete(l6)
 | 
				
			||||||
  l7 |> echo
 | 
					  // l7 |> echo
 | 
				
			||||||
  let l8 = delete(l7)
 | 
					  // let l8 = delete(l7)
 | 
				
			||||||
  l8 |> echo
 | 
					  // l8 |> echo
 | 
				
			||||||
  let l9 = delete(l8)
 | 
					  // let l9 = delete(l8)
 | 
				
			||||||
  l9 |> echo
 | 
					  // l9 |> echo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  from_list([1, 2, 3, 4]) |> echo
 | 
					  // from_list([1, 2, 3, 4]) |> echo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  let l1 = new() |> insert(1)
 | 
					  let l1 = new() |> insert(1)
 | 
				
			||||||
  l1 |> echo
 | 
					  l1 |> echo
 | 
				
			||||||
@@ -43,6 +43,13 @@ pub fn main() {
 | 
				
			|||||||
  l2 |> echo
 | 
					  l2 |> echo
 | 
				
			||||||
  let l2t = take(l2, 5)
 | 
					  let l2t = take(l2, 5)
 | 
				
			||||||
  l2t |> echo
 | 
					  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) {
 | 
					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) {
 | 
					pub fn to_list(list: DLList(a)) -> List(a) {
 | 
				
			||||||
  case is_empty(list) {
 | 
					  case is_empty(list) {
 | 
				
			||||||
    True -> []
 | 
					    True -> []
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user