import copy import sys import random def cons(x, l): new_l = copy.copy(l) new_l.insert(0,x) return new_l def head...














































































































































































































































































































































































































import copy









import sys






import random














def cons(x, l):







new_l = copy.copy(l)







new_l.insert(0,x)







return new_l














def head (l):







if l == []:







print("Cannot call head on the empty list.", file=sys.stderr)







sys.exit()







x , *xs = l







return x














def tail (l):







if l == []: return []







x, *xs = l







return xs














def append(l1,l2):







return l1 + l2














def reverse(l):







new_l = copy.copy(l)







new_l.reverse()







return new_l














def repeat(x,n):







if n 0:







print ("Cannot call repeat with negative values.", file=sys.stderr)







sys.exit()







return [x] * n














def _take(n,acc,l):







if n == 0:







return acc







elif n 0:







print ("Cannot call take with negagive values.", file=sys.stderr)







sys.exit()







x = head(l)







rest = tail(l)







return _take (n-1,cons(x,acc),rest)














def take(n,l):







if l == []: return []







return reverse (_take(n,[],l))














def drop(n,l):







if n == 0:







return l







elif n 0:







print ("Cannot call drop with negative values.", file=sys.stderr)







sys.exit()







es = tail (l)







return drop (n-1, es)














def _length(acc, l):







if l == []:







return acc







return _length(1+acc,tail(l))














def length(l):







return _length(0,l)














def _randint_list(n, acc, low, high):







if n == 0: return acc







x = random.randint(low,high)







return _randint_list (n - 1, cons(x,acc), low, high)














def randint_list(n, low, high):







if n 0:







print ("Cannot call randint_list with negative values.", file=sys.stderr)







sys.exit()







return _randint_list(n,[], low, high)














def _randfloat_list(n, acc, low, high):







if n == 0: return acc







x = random.randint(low,high)







return _randfloat_list (n - 1, cons(x,acc), low, high )














def randfloat_list(n, low, high):







if n 0:







print ("Cannot call randint_list with negative values.", file=sys.stderr)







sys.exit()







return _randfloat_list(n,[], low, high)














def unique(l):







if l == []:







return []







e = head (l)







es = tail (l)







new_tail = [x for x in es if x != e]







return cons(e, unique(new_tail))














def list_range(low, high):







return list(range(low, high))








May 18, 2022
SOLUTION.PDF

Get Answer To This Question

Submit New Assignment

Copy and Paste Your Assignment Here