Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
fp:lab06 [2022/04/05 13:42] pdmatei |
fp:lab06 [2022/04/08 12:45] (current) pdmatei |
||
|---|---|---|---|
| Line 41: | Line 41: | ||
| xs.foldLeft(op(acc,x))(op) | xs.foldLeft(op(acc,x))(op) | ||
| } | } | ||
| - | } | + | |
| </code> | </code> | ||
| Line 50: | Line 50: | ||
| <code scala> | <code scala> | ||
| def indexOf(e: A): Int | def indexOf(e: A): Int | ||
| + | </code> | ||
| + | |||
| + | **6.2.** ''update'' creates a new list where the given position is modified with a new value: | ||
| + | <code scala> | ||
| + | //Cons(1,Cons(2,Cons(3,FNil()))).update(9,1) = Cons(1,Cons(9,Cons(3,FNil()))) | ||
| + | def update(e: A, pos: Int): FList[A] | ||
| + | </code> | ||
| + | |||
| + | **6.3.** ''append'' concatenates this list to another: | ||
| + | <code scala> | ||
| + | def append(l: FList[A]): FList[A] | ||
| + | </code> | ||
| + | |||
| + | **6.4.** ''reverse'' returns the reversed list: | ||
| + | <code scala> | ||
| + | def reverse: FList[A] | ||
| + | </code> | ||
| + | |||
| + | **6.5.** ''last'' returns the last element of the list: | ||
| + | <code scala> | ||
| + | def last: A | ||
| + | </code> | ||
| + | |||
| + | **6.6.** ''filter'' filters the elements of the list: | ||
| + | <code scala> | ||
| + | def filter(p: A => Boolean): FList[A] | ||
| + | </code> | ||
| + | |||
| + | **6.7.** ''zip'' combines two lists into a list of pairs. If **either** list is larger, the remaining elements are discarded. | ||
| + | <code scala> | ||
| + | // Cons(1,(Cons(2,Cons(3,FNil()))).zip(Cons(true,Cons(false,Cons(true,FNil())))) = | ||
| + | // Cons((1,true),Cons((2,false),Cons((3,true),FNil()))) | ||
| + | def zip[B](l: FList[B]): FList[(A,B)] | ||
| + | </code> | ||
| + | |||
| + | **6.8.** ''insSorted'' inserts an element into a sorted list so that the result is a sorted list. | ||
| + | <code scala> | ||
| + | def insSorted(f: A => Int)(e: A): FList[A] | ||
| + | </code> | ||
| + | |||
| + | **6.9.** ''sortBy'' sorts a list using insertion sort. | ||
| + | <code scala> | ||
| + | def sortBy(f: A => Int): FList[A] | ||
| + | </code> | ||
| + | |||
| + | **6.10 (!)** Implement a method ''pack'' which encodes a sorted list as follows: | ||
| + | <code scala> | ||
| + | [1,1,1,2,3,4,4,5,6].pack = [(1,3),(2,1),(3,1),(4,2),(5,1),(6,1)] | ||
| + | def pack: FList[(A,Int)] | ||
| </code> | </code> | ||