From 086f2bbd781aeccb7228ba7a550902da2aff595d Mon Sep 17 00:00:00 2001 From: fredrikr79 Date: Wed, 17 Sep 2025 12:41:03 +0200 Subject: [PATCH] make List importable file --- assignment1/List.oz | 48 ++++++++++++++++ assignment1/List.ozf | Bin 0 -> 3026 bytes assignment1/main.oz | 130 ------------------------------------------- assignment1/main.ozf | Bin 7391 -> 0 bytes 4 files changed, 48 insertions(+), 130 deletions(-) create mode 100644 assignment1/List.oz create mode 100644 assignment1/List.ozf delete mode 100644 assignment1/main.oz delete mode 100644 assignment1/main.ozf diff --git a/assignment1/List.oz b/assignment1/List.oz new file mode 100644 index 0000000..ffad17d --- /dev/null +++ b/assignment1/List.oz @@ -0,0 +1,48 @@ +functor +export + length: Length + take: Take + drop: Drop + append: Append + member: Member + position: Position +define + fun {Length List} + case List of _|Tail then (1 + {Length Tail}) else 0 end + end + + fun {Take (Head|Tail) Count} + if Count > 0 then (Head|{Take Tail (Count - 1)}) else nil end + end + + fun {Drop (Head|Tail) Count} + if Count > 0 then {Drop Tail (Count - 1)} else Head|Tail end + end + + fun {Append List Other} + case List + of X|nil then X|Other + [] Head|Tail then Head|{Append Tail Other} + else nil end + end + + fun {Member (Head|Tail) Element} + if Tail == nil + then false + else + if Head == Element + then true + else + {Member Tail Element} + end + end + end + + fun {Position (Head|Tail) Element} + if Head == Element + then 0 % 0-indexed + else + 1 + {Position Tail Element} + end + end +end diff --git a/assignment1/List.ozf b/assignment1/List.ozf new file mode 100644 index 0000000000000000000000000000000000000000..1cfbb950b19e7d304eab94164559dc74530369dd GIT binary patch literal 3026 zcmZQzU|7e%z`zKic^McO*cccX)`A$U3=9lwKn!*U28Puj21sfZjIk2L0I694Vt~{v z2QffumVp=`k)X%7l^}_oS##go5#Sw&fuRE= z!|sz=T%wm>#lXPO4w7OtVPIfr0kN2jEEyOW>LE;!%@ts#p#=j2LotL2Qkw^18Za<0 zWPq5AAfr=3Mzf_>6yz6`FfcHrfVeCriP<0rC4)E|1^LC9C7JmkCnbRd*m6^IlTwQq z7#I@4+?>?B^pXq)28IL>mnEerzkq>(As)nGODrfz%>(&52F%UNcg-mVnH?(7J&4Jg9O>KQ;YIa zL7^K8QqBnSSO~~q*098!QjjtxTU!PO27iz&lQBrz7s51VU|{fM2C+Rrk;h;IVlo+m zLeU(>07g3o1_lF&tSJKng9yl8#xw>724NwP57J8Wl1uW7JY5(V7=%D_Y?-;xkQ4xM zSrZEiaw-`Z82CUu?t-HHNw-U;sI;3zSSi>4t%U zK^i0h@)#%)#)E7Yqyx(?Oh-3=9mb7#J9)fH=z;7#LPCFfdF6ah5VLFf3zWVCVyJ z7Bes~EMZ_^Xa(hpMGOoKOdz8{iJyUip#fQNE>y4@S#TCquo78tI#jR(S#SzeFdtcP zB2+L7S+EZ(7{|%Lz>o&tg?ZDfx!iv z%6bL{1}9{d)eH;_j>rO_cz3|2wSs|x!4z2~DCe1AQ(4Twz@UMwGM|BgK^>b)Q1(Q9_dc(Ph12#(d`i^@6$K#-ybMeX?hGK{$Y9IB z$N);9j0|iH%nZul5|xpGg~6GDg@J`Zjv<(ViGhj10Zf9*TTogRVqj!oV$cMKK07$| zGBYqTFfufPOJpX7KyX5FU`PU+0ZQMj49sBjK`v)uP-Fn5U6?#012Y3BR34No8Nl+4 z3=UxP85lr%I06u*Qyc>W12-t985kHs7#J8rp`HzAU|@)Vri3U428L(`28I}Ds*vPP z`@N5UL9f5b;_v&)woQIAje&t74ju@e3?T1=ya)0QI|C>Hlo^;9m>F0YSQ(rdSQ%It z)WJc)%;3NPk^!lO1rirnhK0d_0pt}123@ejlfb$_o(Bai$Xt-8L7oT27Rd7;Q<3FC zo@ZrHWI&b&naIt+%mC8Q1Bx-QJR)#FX0rLhO6nj61_n@7#Y32MKPw*)wmNYkG>#5&gNm`+O;=;L(Ezkt#|$ac2O4HiSF>dyI91Ke{ zUGFazxq5BE%%E%Fv=7U_c3{tgVgr;<5J?x|c?kv?q*wwaX%=u`FoOewnE@0SAPmxh z97CW4jXe>Af&e{{azPU*$a|n1%n42lpul4Q=XRD5NMi%kLIEXY4QS4V1p%nCKu)5d zY8;k>LB*pe_oVJAvkn`1x2$aFDED8>s>;B?po&tINrB@QR7-)%eo!IB2ri_U7(l@S zatgLWDi~atfno+!yMc;AHXm41M;)A#85mTc@dS!94(_gBF`mjFJ#SBVmsxuH&i%|WF&C~zS00g{mcH6s`p7(^Ku7{nMD7{nPE7$g`N7$iYe z2dEtaYF&ULS{mBI<^wfxpv5nY4WgL^Y`=bA QqCpK6kfRs{q0I^g0LCpT00000 literal 0 HcmV?d00001 diff --git a/assignment1/main.oz b/assignment1/main.oz deleted file mode 100644 index 011b37e..0000000 --- a/assignment1/main.oz +++ /dev/null @@ -1,130 +0,0 @@ -functor -import - System - Application -define - % task 1 - {System.showInfo 'hello world!'} - -local X Y Z=30 in % task 3a - Y = 300 - X = Y * Z - {System.show X} -end - -local X Y in % task 3b - X = "This is a string" - % removing the thread block yields no print. thus, it seems the thread will - % run once all variables are bound. - % note: it also seems to run after all other sequential code has run. - thread {System.showInfo Y} end - Y = X -end - -fun {Max A B} % task 4a - if A > B then A else B end -end - -proc {PrintGreater A B} % task 4b - {System.showInfo {Max A B}} -end - - {System.printInfo 'printgreater 1 4: '} - {PrintGreater 1 4} % -> 4 - -proc {Circle R} A D C Pi in % task 5 - Pi = 355.0/113.0 - A = Pi * R * R - D = 2.0 * R - C = Pi * D - {System.printInfo 'area: '} - {System.showInfo A} - {System.printInfo 'diameter: '} - {System.showInfo D} - {System.printInfo 'circumference: '} - {System.showInfo C} -end - {Circle 2.0} - - -fun {Factorial N} % task 6 - note: handles negatives as 1 - if N < 2 then 1 else (N * {Factorial N - 1}) end -end - {System.printInfo 'factorial (24): '} - {System.showInfo {Factorial 4}} - -fun {Length List} % task 7a - case List of Head|Tail then (1 + {Length Tail}) else 0 end -end - {System.printInfo 'length (3): '} - {System.showInfo {Length [1 2 3]}} - -fun {Take (Head|Tail) Count} % task 7b - if Count > 0 then (Head|{Take Tail (Count - 1)}) else nil end -end - {System.printInfo 'take ([1 2]): '} - {System.show {Take [1 2 3 4] 2}} % showInfo doesn't print lists.... - -fun {Drop (Head|Tail) Count} % task 7c - if Count > 0 then {Drop Tail (Count - 1)} else Head|Tail end -end - {System.printInfo 'drop ([3 4]): '} - {System.show {Drop [1 2 3 4] 2}} - -fun {Append List Other} % task 7d - case List - of X|nil then X|Other - [] Head|Tail then Head|{Append Tail Other} - else nil end -end - {System.printInfo 'append ([1 2 3 4 5 6 7]): '} - {System.show {Append [1 2 3 4] [5 6 7]}} - -fun {Member (Head|Tail) Element} % task 7e - if Tail == nil - then false - else - if Head == Element - then true - else - {Member Tail Element} - end - end -end - {System.printInfo 'member (false): '} - {System.show {Member [1 2 3 4] 5}} % showInfo doesn't show booleans. - {System.printInfo 'member (true): '} - {System.show {Member [1 2 3 4] 3}} - -fun {Position (Head|Tail) Element} % task 7f - if Head == Element - then 0 % 0-indexed - else - 1 + {Position Tail Element} - end -end - {System.printInfo 'position (2): '} - {System.showInfo {Position [1 2 3 4] 3}} - -fun {Push List Element} % task 8a - Element|List -end - {System.printInfo 'push ([0 1 2 3]): '} - {System.show {Push [1 2 3] 0}} - -fun {Peek List} % task 8b - if {Length List} == 0 then nil - else List.1 - end -end - {System.printInfo 'peek (1): '} - {System.show {Peek [1 2 3]}} - -fun {Pop (Head|Tail)} % task 8b - Tail -end - {System.printInfo 'pop ([2 3]): '} - {System.show {Pop [1 2 3]}} - - {Application.exit 0} -end diff --git a/assignment1/main.ozf b/assignment1/main.ozf deleted file mode 100644 index c0ae42c549821ee7eab313b4e24704a615101c23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7391 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