From 5a0bcbefc6e60e201276019a137e7891d4587d49 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Tue, 9 May 2023 23:08:21 -0400 Subject: [PATCH] feat: work on fibonacci function, add = comparator. --- README.md | 5 +++++ mumble | Bin 125272 -> 125312 bytes src/mumble.c | 27 ++++++++++++++++++++++++--- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index bc0722f..14f2a67 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,11 @@ mumble> sq 44 mumble> def {sqsum} (@ {x y} {(+ (sq x) (sq y))}) mumble> sqsum 2 3 mumble> def {init} (@ {xs} { list((head xs)) } ) +mumble> def {unwrap} (@ {x} { head (list xx) } ) mumble> init {1 2} +mumble> ifelse 1 2 3 +mumble> ifelse 0 1 2 +mumble> ifelse {1 2 3} (1) (1) ``` ## To do @@ -84,6 +88,7 @@ mumble> init {1 2} - [x] Define functions - [ ] Define if, = and > - [ ] Build fibonacci function + - Should look something like: def {fib} (@ {x} { ifelse x (+ x (fib (- x 1))) 0 } ) ## Gotchas diff --git a/mumble b/mumble index 79b96de5a9b80911d5caf207b791bbc37d2880d1..491d6d62e8111201b9f385ca0abdf99fb245b82f 100755 GIT binary patch delta 29126 zcmc)zcT`lz{|1ilTv$M)sdN!RK|v8g#g1Y@0edg8VecKgE;f{`C_0+a#G2SEii%zA zJ+W&nu|&-pHDZZf?)RBHvsd7q&mX_v`JVILbJpiI&#O(lGxyFe>&?sd$ye;tLrC`g z(0h&^<%og5Jj&6cB-}BgwN^4jw9ZT*;UqApn@|@-KSyEbN0%tSx!;*F@_7HYha>y$ zh*^|c#?W~2*z|3glWc0+o7!|0{vjCx9fX^qz2qYb@SP-Iy#U`u@-YSY?vjry!1olq z$AO&sydDQHTVxY@5cE!&e!DjuU*~X3WWwylvk#3*sODi@mXP;$6xWm8F9*u+T+wjozS30M$Z=p_*dAlmn zZH2wq)$zmwi`qC?LMIGZL_2vwH8CTvn_9{9NZQ(I$a5*hnfraJSd0Hht#{Q};WxSK!Y+fEhNkUl?Nq>tEBN6mVe3-qF(@(z85d-~9X5+R#gm>v+vvCci=^vD& zTKo3d@CHO#-fHd00qo%yh{gUi&)@Do>R^dWJ&E)lh$VE-PN4(K9Of6Gr6T0~b}wwK zcE^Mc;~aZGu1xB6-j-+RH9o**V<}OaBD|G{cuuair8x$z65qiDiVUP_BTsL8WU=AfvW=YsXp*aBQ1Il*VyIL z#DCB=Rm+AjA^HHW1H>i$Q*KTvOWX$^}rGjSeDy6|*t7 zr-)y2-(3;E9s(CfOXKwfJ$O7v5pVTz>fWrhX%oCKA5p(m(m!I~pThsqE3JOd0irrK zqJ9&IwSKQrCu{wxiu!fcmDf07j$LdPt>z*Y8*fb1^f)mOm)%lL+CuomL$+}hB_fpg?Uev9XUbp^Q`lv4kZGkML*PN}ILt?lM`pV%YFzTvR^yOTN0h3 zT8ZNztRvwdlmm3-x})?+i{{F>7qm#rlBONqts}l3l9-Xswmd=9vwyTaZvY~XqX>07 z*Gham@-0s^WK`miuDrtub8N=b4d_<0Fqt|DTdF!ec0J*C=9st|vFj(DF&jhlI{E8$3K4Zme6Dry0Dx$JvPgUWiB`pJ+8nzl&KwtjC4rW1Q_Qrvi?s)Sh9r6*Ok{ifOw0BHAhOwtY(w>cZ;-*7 zt(wTzN>^S7VKz3^>$s9xVo zbW^)<(;}!W!I-^IJ0Y{#_^}i3N7or)xZ^V$pP?lBGFD^{f2y^zDnNv3CK|Fp&rqAE zmm6yGeyx>By0RpcX5%6~Y9o^fd()zYy$=v!-wV(7y5|!R*0AM-vWBia!wGaAHoxk6 z2bR6VbCuI`#felyM5-i_Dh{omBf@?9XiYvbPp-rJv?koumEFGOiqUf&xJ^rTXl?p> ziC^KH`4z6!MZ3y3Pg-R*cIc>0&z@#uGf1LKTZ#&$|E0BkF+j9^n@CwjPq`d~we1i0 zYW4Bbl~cL3Irb(lg<_Vizv~?l!>^5$$JC}{MVIno)3-dch2>(l%AR0H9J8k)lx0@>j2&cJ5+aW}Kk9t{#Z=GV5?F_9E!{1EaC;>p zPS7LX2VqSYB$Qos{kqgXr6nXWF1Aa?Yi}wwGXx4+6oZiPVf+@p4p&1e91ykWENanHuf=$gXo8-of1X-w-l0{otFCMU zr3tqtEv=0^D8kx`uugi|(jsiU?pZWX*!Ci9n6CVn6F7#^2erc$KB%4bG>1i+W%tl@ zQ(E*IpyzfYbU9cF(N1m#JO_oNI5aLY%IqkK*iZDxQRmlH`FRcrr_DVhOA$;eHTUjCjFsRZw5eg(NDTRzYJfz zw(`@#Tc6!eWmt1?n=`sicj2qeF}l!Tc!o=m7EkoAa#uL;TMtVsE}x3M$*Vqn@;BWZ4=x!rOp8Icp*%gC@Ob?)==Pog#DiY$ z8S7j!kKzrz(A$TuoaSJ=YAa4PN2C;^U3%45#%-f3d-*C|w$THijgx9Pvb ze%(l$^sDT@n5*-IUBB^L*h!nTu;n(=L;aR1`!{M~S8UY6Uf=NFVW(`MXZr^$>(zGJRyuB=*#oxmI3otORgSEq ztN!%HvA7+5Jg|haa4oeRG|uzvI!uYCanmQ?j2TnUI_fj2+u-6#r*(AOpdQ3tE8Je2 zSz)jrQNFIBO@@?KZmyxjhs;&>tX?p5qq1~0-8{6kGIlk+G&D@9@e5UlhASU`p%sUD zD=mJe@x%5jm42ai!>cPFR?(Q@JCvQP=-c5z%GRH$?}&J%*Uz-ih>;$@tyI<7vD$ir zHpcKaeOXDLj|d^9sK>})k2$OUN55nxZ85TxvTG$BHL|X|`~MmQ(vu?tl$e#&GIEA; zb_E?esBoCn2=a=#t8%WwhVu0A<^<%+%5K6lKm&^!%7) z;+WZNY*nIUE}=8Wg*#SWBJYpSP!i@tuaEmzskKDw*vI38l{t($P4EvN%(St>@pDWF zZ%3DJWY*6h(YijJJn*yW(mec*PNexRo&d{HtPJu$JI(%}dCYGRvS zp17dRwo2UMxHJz($Z_Oi9rb=(nsLJoECih)tl>f{2y3|zXBFx~*ut5r5Vmun0)$;$ z2!gPa3phD7Zo5I(O=_teUPM1ms;+FgK`T#gP5RT6$>F3u-8H!esX|{)ZlnBpoi?13 zL`KkkQ%aJ~^wyNN#F17sd56ASfYztA2hG+H${3nRuXT%a4B`>(T&sm z9j0j7<8d@H$ve|B?IIyAbnlE=%DXwV{><)5?3~PBW*Uhy*GxC2G?dwxH1m9MW) zr_oiji)Z@GDojXG8az8r8K0UtY<3T#jGav{rQY&3&*Bw4hCa#0tf;Qtex0%;&7#M? zFRy$^p*i1sD|2U4M{`rix#KalEIlJmqidIYjkF-<-Lj0Y7}j?yiVr7E1nvaUEApWHD#2T!PH@G zW#zAJGPNXDMBy2 zE<^`!2*Bh@+t8!vhJNTrKC#R(0lbw<`r-2Npza%Mmj1HoTLp6<%L{`)!txtl7?+_V zHoB7{G-cy_#nhMjZ2AssOVXw?Wj^=OHpc0b-x`wq5gs1s##5F*!D~gxH~P>co0_#hx%@Aqr~^6!#1~6#=>B;d&v=fxlcP>z=}1Jxt;Ywc-x!4-TaHoir%o1({ofG zx@Jot381I81Vx-%|E&#&A?t0pX>CJj9@nqEY4NQ=%DP^(-qvC+4|{zJx?5;^^rEx3 zu5fY9qxrKJjoKEZr1hlVZHrP;deH^jl87sH$QZ5s*pp7lnC={v_$^K$>asmp$?QR+ zwuiX<-s78MOClY#JxJ-$gU;W+T6wjaR@>3R#i2V4N*C;G>CzTzYlnn%qk;PZlmW|IK_~2Q6%WPJIhoKXdMWtXJ#WeKVZco-R8OpoF%=233rvt@EIN9f)_a%VTk? z9j$XPK$+bZ9Z`(ln9!T%9gv_u%B|U4K*KHt2}N) zD<2Lf{U_2$sY;{IhGFR(cs5MQnM)U+ZLDO@r4P=QBugkcS3^1QC#`+1T9MGX za36|xViYf;FFomubJZMc;ZUVjoY}eZpY+7J)WIIXbAk0npep_cQ3WIc7fP~X3guhcKG#-qFldAOI=EEYd>3a zX~hA<(2-_b3UVkT$UwUOQdpsPvowoWv*_JRCNwy9oJ~1->WE-uF*-qrzvUGXyIGIO5bX<(ybb%QOVz`+YhpSe;bd& zv+lS-t^Fs{#AChF6Lv?h|6iwS;@51?QnP3JQ^FJ8BKq>-J?t`UeNCI zPIIp?UL-f=?Qpg{&?rL#?|4@3UJW-LeK2C6Pg!0?@%SzIJ%iQkA1xNYVH766M$v(H zLX_1}bm5&g9xeXYp=nk6<<6|SnN_q5F?bj{1IHzh8vpOA<9wL-8Qq8xaqMO;?ov1>PcnV`j6_)PL;WhXoP{X zKf2aCjRCVPxu8`F4>HlAd={mO@=BEbd3n4j^K*3%ULGLI{9N6UM%@cgR{cgh-20Ij z>Faw7lNOZ-~wq!-#jQoVyN%KV5LJvTJK?^vbrK&{V>M%az(yV_4hKO zehb6tTp=g6Plo+bXnVuNN;u~43{dMzGRP}SG2o%wY5@W!aUAT`o zZTqNb;6<3kiJHcx#qnXlZK(D%@FZMSEr}KBtVan-p9=KKqq55LaQfxZ4ELf^xdK^)7f`dAj$nFlBpr`qy9e-JSo}z>!8H!5w)(Aa19l##)-%=3D7Ey`eFJxIHy`_aNL3M)Sc(;uFPD6`AZ?B~^NS3pT$ zUGbzPpBt6rAnN_1cd4LZ)?>r_L2y;Fn7cy8MNw>BCT~*?O3vzfQaEj)|yE zlK9sn@99c&UZtWbPwL8{d6hPra*M8Pl~-x6DHrO>Dkbu2?KJH~UF$_#{!^mSuD;e9 zzAT-mh7Ou>P2Ko%UZu094AhmoO4H1Lf*girYvYzq@BQQBeRYU6Zg1gwpI^MQOHsF% zAr3CWvLcOn8SL=ju;!-FAume=HP+oOm(r@ExxEY2WbLZ^JCJUD>EmD$UMuNuFMYgU z4Ynp5oyTi&;DQ_zaZV*G5lK|gEiiz13v;kN;K`qDMYLq?>xavbTgoFPg|0Il>YRQWD|b_GNP z(Alp-v7GLB72%{Hl{hY#5J3NV<*j6tqzJWdjE4<=_3aYVqSB{XuYzKkj`z*wX66$*JE*>mj?P z1iknsLAlYN`n?@&d#D7ifaGamMtBFox{?b*EG)=)@W`jpAh5x=*4&b zz8`$GDrpDzwezUm{BX+bO#|LLD2IG$x%XX_!@e~2{Zu^q7XI*?GS~-=YU~i+g-@dB zrL_FV=1MakI`Ly!tp2}zysTXErei<#cK^m#EB(b&)UzqEG);XNm-+{vpq^Y0d z>h|Fg^5t#AnKXBP3nQ{=&-Tr<2nDNAmb!f@QM!;;3k%6tiy)Cw%VqJPEx&l%=E9E7 z|LjFKU3PI0pWdwS;0HI#5>LAAOL4`|gT@T@pbx(Ew?EV!!_wcAw)`4ozl6(po|*Wy zb3`r3Xr#D2-n!#9t|TgoiNd!I-0Ve_&uehSof>nyC`sFCuiRbA)?(CGT|~TShT4fZ zFLEU9mEA=b^&}URer_z1kh)|o8?BIm>^33Il%cMyoI>K2U))%dLJldtTv(J1Szc%g z|H?pG^z(LEcWg+i;`O{aYUj(J?Bop$9|OO_*v{Npx*Y->bc9@t{bNVmmAC7%Z0(7n zC~l70V|s4~@tE%OgCkj?jCBx?>8%~IPU3N$C|&LNmATuA^dd@STh_;!1QRD_cE+Q; z#fD`#lTylY8+O&1R8rDyn1c&RF79HZ4K+XQ*!iAU>Xe0S;UgMVg#F?|W+{Ue7UoL4 zNq-jWO1k^)P@u%4h3)iaceHckL!)p-aJR(@%XTG+E=fd-s4cw%2&?D@=Oh;AMq-05 zHAdTybG>#R07t_!Kir0X&?505vk2SnhEDiG*cUfaOL0|LZc!4%x)vb=Nq2U-2$@7Y zS!_`fp|movu|>&DCBeW=5=c=NUyMZBG*xrirwyR9*s<4$V1ABqFNWj~L@Z!j0*vCWU&b|*i@ zCokbWa566Sh9%{os>Y|Dg4-7!<|)1h6tAuNFM08nRy+aiLtZ?m6_2BMjTaB>W27Vr zWcNMDG-csp*4vZRQ~qwm)_IcPLgf}44EW0ik5XCJJc%PdG6`k`=GyGsZ)SUE=`4uO=C3|pwdTfpZqF^C6@Dber zSsV5S?^uy?#Dhh+U{od*Cp-Q7{;P$7rC40sTgw>pgnwCcKeRlQ4fP{+Te;OkJ@3!c z#*2@Sk(V!uG9RCe7?iU`nU7D)x+rIeGJoKR<>i&4ya(mlEZ2|pbL+|7T=5w?U%t|! z+p(k)q(RX-I6>mwT2*5Be0H`3sp~O`2N|@(I@s$m*tgP|zd!l0K^^UkNE_{jJFTO= zuMX_jZMTm07G7Me75Qkd{v+>MAkD)Nm9nq zGFQ~>{@g6@05TCHp2HRe5({b0rj#P_P?61<8 z65qejW&rVH<%7r_yEb!`wBRKf}ei@hiW|BW;GDtgR-&)*@6sY)S>P0`tQ^oHS63 zkJ+UtECS=hiCcxcRx=sp>%)9e{;?Jj<>5oNJDe;Ih!fmRBo5$-tLtSgF=k;!;#F+w zpE3|EjIen6#DSTskP>WHMUtuf@sM?mBH_x`hb%3M)K|WL$m>)_>G_a-jKU>cHj;#d zHNJ1Hi%3*WFKdZHtVLw-%bFNT$`EDEeGxb5K08^B)K%Kv7xAJhBVLU^^2ZC+%UV2N zYZ38WSZZamC$QaJ%|mZ$tX|eUs@`S8DiTlUxp_Q`vYA!Lb>-PzQIY+3MFZJg(ZFGM zd4)J*wav?_1oj@u&iwA-SMiMK__^J7HFM!)9| zSyeAs!l4`>>KV{5+`SPrSrdSsn?-tTJ*D#21C8}@u}DAwTn;vw_e+N zsbAW~rB%2Cx=qv2uW{3#J6P&o&$?Hg)U(?iL;5-Q>zg#R*XRMmh6Y3jj7}WXXH>xG zvBLs}CJpH`azL+u#F70V4IMoyJfQ8!@c|*x0g(ZfLbaTR*pVZLjjS2aNch8j*wDe_ zWsLvz&+68U;D#ZZRc}G!j9P>&Qwws#R>`T$TDB#-GH}0Uz?bY~>dOI1^hHqcQ>(QV;WTXC)xc&cZB#z&B>-QBf zIEHc#-sdHM4fruDu?s1tnE0P8*Cz%;#P(dZCFJDHTy-39B`_U$e^;(r9e8GUuDTxh zA}d!t4XnL4SG54m`*Kx>!dO-g=g9?n%~13#XIKd|u`_ycR6 zg@0juHL~M51aLAKieAW7!+_m^O@aG=%~gj3V}CP6tOtGQ|paNVt3 z)y>&p$hecMMgT|LLqmYc58w|hip?|~SPmO(25=?tBG3&xd5*KmVE7e+n~TBl_%Q+i zTjEBcC2;g#2mmaLn~rqgpTG=YlV=D390$w+t^vBa8Vr|#5kM8#68QKz{DBGoz#ka$ z3I4zVpWzQ&XTwJY!eI3aFftEv&eFGf{u3*2w7s^fq)3#sZ-;9f^n%?3sn#&QOn z3N#ck7`}7D#SGj9i~;&Nt7;G6ZeTJn+(lJa0-FP~fkT1!fpdW-Ls5faD}(^x2Ui3D z)-QqpKoyt_Y*Z8hfD?h)z%IoQ0C>k86)0vfC?4t9@0qA@BvTH_*2@0s#4W$7_ zvF(ip@&oO~z&#bQqW~?yJHRCo*lmEhKtC^3FcNDma1F2v@H%i3(7qCe4p;;qa~uFp z1l|GiPiPEyK$>iV5CGu_Fa}tsD!Lvx4VVnP3tS0&jqNNO=!os?5wJhd)(4Xp7z7MU zK+A#O1A7C#o1o>u@xaxzl*h7k}eb8$u9-Nx+7{hrr&zS#9v0I^b^L zdf+^4Tjzn3+N0}$D}YYLaouAF3In#mZqpQ)0vrt73!DS|4BQO#$4+z}I1l(7_!hg8 zlOL}CGT$M9AFf+qQ{YA5U|@U~1OOfdZU#DcMF3z5@Hy}d(5VDwdpGz4w*Z?0n|Fsl zFsTRpfol`t5Bwc?9vIdW{=hCkCx2Z3Dz-2%uQvfCzgfQTrz^1^8 z0}%k&7B~ku9=I8}9C#jh4)`4S0q7KHFa!^RKQIB<6gUhx7`PBP2bcxi473@nsuzI~ zz#L##pvkQiCJlrL;B{bIV6&lEcz_dti-Grm2Y@|?;kpMt2HKW382SuX)ezt>z&M}< z*dG`>0*Qgsft!KHf#-pxMj|n=7tk#TOZiCEq((qE2%;sh@+e$(z<$7mz@LCSfxiK- z0&PaC>RVtc&^s7@!0NzPz>dJ+Bvc&O3Ah-z3AhIsK1Nk<0^5vL)epe#<8j%R!O}hn z*MAIzOOtTf0nOMwX8^YXR|A*KK+S>cfzN?iK&P^pq`)xX8(>ply_x88;5^_Q;9cNm zV7V0d0~zo+&}$a_L$HJc!+_^Zv(a)0v%Xi=;lNYCbfCRiRWpE%ffu48!%GxEu=(h<(5rz^}m7z$z=TVgb7Y9|6rk+X`4%fI+}gtFT}JTLOCn ze+A9}{_r#WfiG6WA6R`2{DG0{;U8`=3IIK--F#Y``F(=SBnoHU{HY=d#NzD36xL-Jht_Lb-R5i2*4Ygc5lPhf5059YEJGl`FJGcg#( zvKj+nlE6A~h-2di;*8*rY_@zL{0p;#D3S*30hFdKM|0I)ygIQiZYfFwXFH{{lf47> z4NwaegCPg{2R3>1HaBg!0oU(@e*4K>wI)*P{x*@ss=o^Txl_67BV%6uZKGBHRx#8! z%)G$aRD$x6|BZJUL2lfCEI03i4-ubHIs#j+rtVgoI z!7w|04L6_2sV7zX@tj(#uENZlCBm%!?(4a#SH5U2dNg-i%#0hk>Y#jKdg@{LA8dcP z!F&f0-?D8Xf4P~fX6CcqsN0T)e%|l7tnO&yQAq1~5ak&eLW&!ALL9~F4M7`|St5rt zHkHGVERgG~pmW!;RS@mlLL71zVJ2W6j7DJxd%#T=LLAP>P#z89d=|*Xs}Q%bdR%-9 z@lTcrG1T1-%kbM=bxYo6$4%+S+4FV>J%k+nQ-v;LfX#Kb8 zG*}d^zNY>#o(tp7`HWlX#}Md zM2g#GL$vi_;Yskk4|x%52HI$F=5uWb7Xu(huq{cL?)BIO4y{=lS0qExi@o6DN{G#v z^B9QP5E-j526cS|u`z4KSz8x=)s5g{5XA9pJ{KE8ye`<@5I?a?oSgwNioJqpS`D!r z9^~>ZqkIK$6e|E0G~MM$FN=FFiL|V zzGuIW!(^BP(XIyjG!Anl1M+@WVm#=J5NFq7-KLP@wh+y%D_Emj5!`68$y|(psIr6O zaSu>5nl0yz9S$lun*G7$bjXdPSslp649E$r!~}R zML;Z3mn}z!8Cyc`!tPGM^xMS_a&0;oml!q$TDuI$HDcHyE?JKpZ?S`191igTy9?1S9pdW-q8%BKjSX41i99mo>J1q_#`d+# zfgIP6)#1DwZk+}-WXny+2yr+&I0-#Lh1NJ6)NXbc)iI_+e8;|WF#}>(R$?;5ix8)> zu9LY>9P7qg>xL7LHEc51MnLSzmT|Eq#2)M}3`rmMmD>-DXHzEeUWH~D3ryzGAWjlu z4#ZS8c?t~Y#Eb6dCnxjRGK{2=AD--IccCTO>?=1qVT}gOSs4xD4H*sMBO$usT;vs7 zW`gTGc96qoUM)W(c#Q5JCR8aMvJIPxDrt8SJ5emp>LtUrItOg@U}9M!7u|78(wf_r zG**W=fvtgP*9GE*CVXe`WcQPat#J~FTkI(};|DFpS>#lR$2AX4v_Slwwd1T4PEMlO z-KmHk2C)rW!o{W#$FaTKU^v9>!XO>uZ>-)l;#G)W8yP6(uoBZyg{u(DHD|d~iKo_z zwcH z??7zB;%A^vd_kzihHx8#IJCfNckB*B_$ViBAwu#~^gTY?PJG?A;7f%9sHe z`^`+G-pNYLgkuhvUszX&c5XPFS=v>bS!~Zt+}y96NxbdS!G?BYxik61gxsE$NP*u) zh`+FCh;}&;ZMw5=Dg5H`Hy8?aXH!zp>MD>&u~po$%tR5HNLafQAa%C)A#i1ojixHuYODto}ig%G-^&%dP}zd!WhBeg}-G#hd&941vGFt$GM*@WwD zSr2`G943{|8%sRWXgl0#=tn^xmRH~F+aOw?H$fksSKmk1n+y)6abyC60eKA+aW{x5 zZs5md*Z=PT27Zk82>L1c{FA;l7W(=)?K+)Le^}~6aGAm2Zy0n?V4?RwbNz{OJ@kQN zwGFP(X~<1+B=#|%ZH{hhfj)SGs@BMxY`ET9g9C=I&ID~MwF`kfd4jg6Y4;X!C@-I& z-GQ^5ImA}kBno!3q1ZD)+hJHl8Waab!R|B^M-go@u3rn}Y-yCvjZR3TkYMa06WCn7 zTgE}Yjg;7{%Jhd^f0C-&=W9x?KJc@l51pcAwObE4e2VsPV>%7F#}u5qxr?jHhu>tuWkoln2Ss>g5Hz~Cwj@H3y^#!LBR zH8AvtK5MG_e;#4XhW-=u=kqoEm_CN(q@Sov54FlJitm-^c#`qTU z43;>LFB@eso@^=?t3bTTR&lW{#5i_@i=!c~XAiiz5aL=!(n(pnY|hSS&C_w7b727+ z%JDU2;prH!08CG>MQko)V+`cwY)d-U?H&+Am#|+soea4ndjZ#r4C%T_yCwlNIqn)UNa@&`ec*tDPVQ_(qW z`_IHnaT}0z_Ghvc=U+XAZCmNG7pNHAu-DFCO}u>S_7c2yI05mFR6l1&pf+vlE7T^@ z9D@NlV}~SP(x-zK7)3N`9Q=2T9(4h#&$aKTGm;^6@4-Q%Oa)d4xDZzTDqBL$HxE7V@{=SK-1SEBYBB>C6i+10hg-L!SI(BLN{u#A)rZ6v>_0N+pYCkyZsCI4RXjRf)5v9I4b!el5Z&aYm(nC`N@)hEcx(7f`Gl2-|#^y zMoPtZ(!t&+y843TJ&Fj0hvXeLigKc~50?Bb$!o_k&_zprfaK-MU}$bcem<5CTSSB) z8K|3d2$Ot_ zmP2q<@(r#F-U(Mde_fM&i<_c+TJrpJ5#BJb+k%%3H++@+5y=iA#^(>U%80Jn+(0A!y&2oK`0E`%^-9)B;V6r z1k!E-!CNH1##iuiH8p&Yd_Zx*%S+b4KRM#vn<4pREpIIxq)A1DpK$OOV2F}@^Adsx z$AI%!eaXLOQ@7&dz~^kqR#H(3Tfok4C1Y^2RBsz;YbY4ARJ^sDZFe8Kgo&_C8@KH$=lhX?O?|pTABEwc)Dd zk0uDBg5>{{{Kl`W)OK7F9oMtgK;N-Xg+Yw8tK}#vR{uHsaXUKqAuFe zwoIBuT@*we$@5P=cqfjMd_Bo$O8$pzHgX5j`fU)3Zc_hP>g}Jfeb6gwcd);?-L)pd z0RO>)_6jI0;(MHBl`>(sL1jIGzGLO!c*=N*(r(KowvpR4Ji~5fl19Gm#9$e$_05uY z^fy*>Ckgi%lO+OFmT_)M{UbJYC%WOTyr!B+^*gCfl%vyK@&+eS%_e0;z1PX=7nA&q zv+N<#MfN!?93rK@hSc{tDfmh#>{M(;=DtDR4&hmIW3;6Ap z`V;tHRQSuhB?qObrT5H9HrPF9rYU0)J^oF+e}bFOv@yt28Z6 zuqA(>!1@*?`3dKQVN+=zBl##xILuN#CyWaI`aJ_e?Prq zTF5~Slfjor{r&=-xK8rFU0@sGN8YgC_mYYUIlF`(e$rNZJ(6ZIay6SG!+wR7991mh>_sZ+0jWoX@%@<7;g!Xwc#3zyuv}Xh1r|j6zegyjVkc&nI z>0b`_y}T854zY&^k>|>3R_+iMsl*zh`PSQ3{+(lPceub7I!E#Wve&F}7fSw+Tn~I? zzGadhEa#YY3a^#?GjZLq8;7u8FaA?_VFa|-VQFM1?_I4Udq(md3RLc@r>@~*;8(67qbZ+GWoqJ5$ zUwFg@W|MA;cPDlh=-c#&NMv2)$`%v#81seIKSIX%hTwld;xFwC7s$VF%{zbW-|X@c zEOxaLG_}Fn*$1S4xx5hlh1zgR@;fgI!n&VdlDx-NmT(kWjP(#9PVRdx%D_DKK;0 zBtO2uYUd;Q4RXh*FXQm(50|_tQxGr21TsvLyq}nHtlA0EDe_2Zq17)RX_PH5H|sTdMe={LBPVd) zS@S5nbpo@v^kr7_B<|K073lCrxV_^IZv89!@gzF@*mF^r=CY2Hq&}^{eamdg_x~X6 zW!-;}e9=pSuP5Uym;8@M1u;w7uaW$`BN}hgJ9C><%<&PH5)Ayy|GdIA3v~WT$>ZlC zwU>2SxG4EHvO;Bq+Hh0yE^@ybq4DhGDdO+J<9mrc-C#XmQrUx3#4E74mq?#lV3jK; z`De`MG%4#-Qx?0u7wN2LEsfZ!)5I&XvsBv^5{-+LmFgq;u{#7&QSu`-w^C-Q{*Qu_-_=gcbhmI zfBl#=!Y8XWo{)+~{^x&DWaByQHbB(UiUC=BpAeOh0JhgcsuePv5$a#qM-=gQ>5)%K G+5ZQk$lN6W delta 29176 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 nLcell[2]; if( choice->type == LISPVAL_NUM && choice->num == 0){ - lispval* answer = clone_lispval(result); + lispval* answer = clone_lispval(alternative); return answer; }else { - lispval* answer = clone_lispval(alternative); + lispval* answer = clone_lispval(result); return answer; } } -// Comparators: =, > +// Comparators: =, > (also potentially <, >=, <=, <=) +// For numbers. + +lispval* builtin_equal(lispval* v, lispenv* e) +{ + // ifelse 1 {a} b + LISPVAL_ASSERT(v->count == 2, "Error: function = takes two numeric arguments. Try (= 1 2)"); + + lispval* a = v->cell[0]; + lispval* b = v->cell[1]; + + LISPVAL_ASSERT(a->type == LISPVAL_NUM, "Error: Functio = only takes numeric arguments."); + LISPVAL_ASSERT(b->type == LISPVAL_NUM, "Error: Functio = only takes numeric arguments."); + + if(a->num == b->num){ + return lispval_num(1); + }else { + return lispval_num(0); + } +} + // Simple math ops lispval* builtin_math_ops(char* op, lispval* v, lispenv* e) @@ -956,6 +976,7 @@ void lispenv_add_builtins(lispenv* env) lispenv_add_builtin("def", builtin_def, env); lispenv_add_builtin("@", builtin_define_lambda, env); lispenv_add_builtin("ifelse", builtin_ifelse, env); + lispenv_add_builtin("=", builtin_equal, env); } // Evaluate the lispval