{VERSION 5 0 "IBM INTEL NT" "5.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }{CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 1 } {PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Heading 1" -1 3 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 4 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Output" -1 11 1 {CSTYLE "" -1 -1 "Ti mes" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 3 0 0 0 0 1 0 1 0 2 2 0 1 } {PSTYLE "" 11 12 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Title" -1 18 1 {CSTYLE " " -1 -1 "Times" 1 18 0 0 0 1 2 1 1 2 2 2 1 1 1 1 }3 1 0 0 12 12 1 0 1 0 2 2 19 1 }} {SECT 0 {EXCHG {PARA 18 "" 0 "" {TEXT -1 31 "Functional Programming in Maple" }}}{PARA 3 "" 0 "" {TEXT -1 32 "Lists and higher-order functio ns" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "n := 7:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "L := [1,2,3,4,5,6,7];" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#>%\"LG7)\"\"\"\"\"#\"\"$\"\"%\"\"&\"\"'\"\"(" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 72 "L2 := Array(1..n):\nfor i f rom 1 to n do\n L2[i] := L[i]^2;\nend do:\nL2;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#-%'RTABLEG6%\")O-_5-%'VECTORG6#7)\"\"\"\"\"%\"\"*\"#;\" #D\"#O\"#\\%&ArrayG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "map( x->x^2, L);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7)\"\"\"\"\"%\"\"*\"#; \"#D\"#O\"#\\" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "map( x->10 *x, L);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7)\"#5\"#?\"#I\"#S\"#]\"#g \"#q" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "map( `*`, L, 10);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7)\"#5\"#?\"#I\"#S\"#]\"#g\"#q" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "g := x -> (y -> x*y);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"gGf*6#%\"xG6\"6$%)operatorG%&arrow GF(f*6#%\"yGF(F)F(*&T$\"\"\"9$F1F(F(6$F'F2F(F(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "g(5);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#f*6#% \"yG6\"6$%)operatorG%&arrowGF&*&T$\"\"\"9$F,F&F&6$%\"xG\"\"&" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "map( g(a), L);" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#7)%\"aG,$*&\"\"#\"\"\"F$F(F(,$*&\"\"$F(F$F(F(,$* &\"\"%F(F$F(F(,$*&\"\"&F(F$F(F(,$*&\"\"'F(F$F(F(,$*&\"\"(F(F$F(F(" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "h := x -> y -> exp(I*Pi/2*x* y) + x^y;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"hGf*6#%\"xG6\"6$%)ope ratorG%&arrowGF(f*6#%\"yGF(F)F(,&-%$expG6#**^##\"\"\"\"\"#F6%#PiGF6T$F 69$F6F6)F9F:F6F(F(6$F'F:F(F(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "h(3);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#f*6#%\"yG6\"6$%)operat orG%&arrowGF&,&-%$expG6#**^##\"\"\"\"\"#F1%#PiGF1T$F19$F1F1)F4F5F1F&F& 6$%\"xG\"\"$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "map(h(2), L );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7)\"\"\"\"\"&\"\"(\"#<\"#J\"#l\" $F\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "assume(a,posint);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "expand(h(3)(a));" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#,&)!\"\",$*(\"\"$\"\"\"\"\"#F%%#a|irGF )F)F))F(F+F)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 3 "" 0 "" {TEXT -1 18 "Generating objects" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "L := [ seq(i, i=1..n) ];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"LG7)\"\"\"\"\"#\"\"$\"\"%\"\"&\"\"'\"\"(" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "S := \{ seq(i, i=1..n) \};" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"SG<)\"\"\"\"\"#\"\"$\"\"%\"\"&\" \"'\"\"(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "L2 := [ seq( i^ 2, i=L ) ];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#L2G7)\"\"\"\"\"%\"\" *\"#;\"#D\"#O\"#\\" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "L3 := [ seq(i, i=1..100) ];" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%#L3G7`q\" \"\"\"\"#\"\"$\"\"%\"\"&\"\"'\"\"(\"\")\"\"*\"#5\"#6\"#7\"#8\"#9\"#:\" #;\"#<\"#=\"#>\"#?\"#@\"#A\"#B\"#C\"#D\"#E\"#F\"#G\"#H\"#I\"#J\"#K\"#L \"#M\"#N\"#O\"#P\"#Q\"#R\"#S\"#T\"#U\"#V\"#W\"#X\"#Y\"#Z\"#[\"#\\\"#] \"#^\"#_\"#`\"#a\"#b\"#c\"#d\"#e\"#f\"#g\"#h\"#i\"#j\"#k\"#l\"#m\"#n\" #o\"#p\"#q\"#r\"#s\"#t\"#u\"#v\"#w\"#x\"#y\"#z\"#!)\"#\")\"##)\"#$)\"# %)\"#&)\"#')\"#()\"#))\"#*)\"#!*\"#\"*\"##*\"#$*\"#%*\"#&*\"#'*\"#(*\" #)*\"#**\"$+\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "add( x, x =L3 );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"%]]" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 23 "add( x^2-10*x+5, x=L3);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"']$)G" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "p := add( (i-5)*y^i, i=L );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"pG,. *&\"\"%\"\"\"%\"yGF(!\"\"*&\"\"$F()F)\"\"#F(F**&F.F()F)F,F(F**$)F)F'F( F**$)F)\"\"'F(F(*&F.F()F)\"\"(F(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "map( g(4), p );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#,. *&\"#;\"\"\"%\"yGF&!\"\"*&\"#7F&)F'\"\"#F&F(*&\"\")F&)F'\"\"$F&F(*&\" \"%F&)F'F2F&F(*&F2F&)F'\"\"'F&F&*&F.F&)F'\"\"(F&F&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "mygen := (f, len) -> [ seq(f(i), i=1..len) \+ ];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%&mygenGf*6$%\"fG%$lenG6\"6$%)o peratorG%&arrowGF)7#-%$seqG6$-9$6#%\"iG/F4;\"\"\"9%F)F)F)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "mygen( x->max((x-5)^2,x), 10);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#7,\"#;\"\"*\"\"%F&\"\"&\"\"'\"\"(F%F$ \"#D" }}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 0 "" }}}{PARA 3 "" 0 "" {TEXT -1 19 "Map and its friends" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "map( isprime, L3);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7`q%&fal seG%%trueGF%F$F%F$F%F$F$F$F%F$F%F$F$F$F%F$F%F$F$F$F%F$F$F$F$F$F%F$F%F$ F$F$F$F$F%F$F$F$F%F$F%F$F$F$F%F$F$F$F$F$F%F$F$F$F$F$F%F$F%F$F$F$F$F$F% F$F$F$F%F$F%F$F$F$F$F$F%F$F$F$F%F$F$F$F$F$F%F$F$F$F$F$F$F$F%F$F$F$" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "select(isprime, L3);" }} {PARA 12 "" 1 "" {XPPMATH 20 "6#7;\"\"#\"\"$\"\"&\"\"(\"#6\"#8\"#<\"#> \"#B\"#H\"#J\"#P\"#T\"#V\"#Z\"#`\"#f\"#h\"#n\"#r\"#t\"#z\"#$)\"#*)\"#( *" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "L3[85..100];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#72\"#&)\"#')\"#()\"#))\"#*)\"#!*\"#\"*\"##* \"#$*\"#%*\"#&*\"#'*\"#(*\"#)*\"#**\"$+\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 51 "Complicated programs without assignment, nor loops:" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "map(ifactor, remove(isprime, [seq(i , i=85..100)]));" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#70*&-%!G6#\"\"&\" \"\"-F&6#\"#F)*&)F.F(F)F5F )*&F.F))FCF0F)*&FAF)F=F)*&FJF))F%F0F)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "map( x -> `if`(isprime(x), x+1, x-1), L3);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7`q\"\"!\"\"$\"\"%F%\"\"'\"\"&\"\")\"\"(F)\" \"*\"#7\"#6\"#9\"#8F.\"#:\"#=\"#<\"#?\"#>F3\"#@\"#C\"#BF6\"#D\"#E\"#F \"#I\"#H\"#K\"#JF=\"#L\"#M\"#N\"#Q\"#PFB\"#R\"#U\"#T\"#W\"#VFG\"#X\"#[ \"#ZFJ\"#\\\"#]\"#^\"#a\"#`FO\"#b\"#c\"#d\"#g\"#f\"#i\"#hFV\"#j\"#k\"# l\"#o\"#nFen\"#p\"#s\"#r\"#u\"#tFjn\"#v\"#w\"#x\"#!)\"#zF_o\"#\")\"#%) \"#$)Fbo\"#&)\"#')\"#()\"#!*\"#*)Fgo\"#\"*\"##*\"#$*\"#%*\"#&*\"#)*\"# (*F^p\"#**" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 11 "Twin primes" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "select(x->isprime(x+2),select(ispri me,L3));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7*\"\"$\"\"&\"#6\"#<\"#H\" #T\"#f\"#r" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "L4 := mygen(g (2),10);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#L4G7,\"\"#\"\"%\"\"'\" \")\"#5\"#7\"#9\"#;\"#=\"#?" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "L5 := mygen(x->2*x-1,10);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#L5 G7,\"\"\"\"\"$\"\"&\"\"(\"\"*\"#6\"#8\"#:\"#<\"#>" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 25 "add(i,i=L4), add(i,i=L5);" }}{PARA 11 "" 1 " " {XPPMATH 20 "6$\"$5\"\"$+\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "zip( (x,y)->x-y, L4, L5 );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7, \"\"\"F$F$F$F$F$F$F$F$F$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "L6 := zip(`*`, L4, L5);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#L6G7,\" \"#\"#7\"#I\"#c\"#!*\"$K\"\"$#=\"$S#\"$1$\"$!Q" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 38 "zip( `-`, L6, mygen(x->4*x^2-2*x,10));" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#7,\"\"!F$F$F$F$F$F$F$F$F$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "p;" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6#,.*&\"\"%\"\"\"%\"yGF&!\"\"*&\"\"$F&)F'\"\"#F&F(*&F,F&)F'F*F&F(*$)F' F%F&F(*$)F'\"\"'F&F&*&F,F&)F'\"\"(F&F&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "expand( p^3 );" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#,H* &\"\"'\"\"\")%\"yG\"#>F&F&*&\"#7F&)F(\"#?F&F&*&\"#kF&)F(\"\"$F&!\"\"*& \"$W\"F&)F(\"\"%F&F2*&\"$/#F&)F(\"\"&F&F2*&\"$>#F&)F(F%F&F2*&\"$u\"F&) F(\"\"(F&F2*&\"#jF&)F(\"\")F&F2*&\"$7\"F&)F(\"\"*F&F&*&\"$)>F&)F(\"#5F &F&*&F8F&)F(\"#6F&F&*&\"$\\\"F&)F(F+F&F&*&\"#gF&)F(\"#8F&F&*&\"#IF&)F( \"#9F&F2*&\"#%)F&)F(\"#:F&F2*&FCF&)F(\"#;F&F2*&\"#OF&)F(\"# " 0 "" {MPLTEXT 1 0 8 "nops(%);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#>" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "f1 := unapply( p, y );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#f1Gf*6#%\"yG6\"6$%)operatorG%&arrowGF(,.*&\" \"%\"\"\"9$F/!\"\"*&\"\"$F/)F0\"\"#F/F1*&F5F/)F0F3F/F1*$)F0F.F/F1*$)F0 \"\"'F/F/*&F5F/)F0\"\"(F/F/F(F(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "f2 := unapply( expand( p^21 ), y ):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "nops(f2(y));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"$F\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "f2( 0);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"!" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "f2(1);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#!32SG$3 keae&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "f1(5)^21-f2(5);" } }{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"!" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "h := unapply(mygen(x->mygen(z->y^z,x),5),y);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"hGf*6#%\"yG6\"6$%)operatorG%&arrow GF(7'7#9$7$F.*$)F.\"\"#\"\"\"7%F.F0*$)F.\"\"$F37&F.F0F5*$)F.\"\"%F37'F .F0F5F9*$)F.\"\"&F3F(F(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "h(3);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7'7#\"\"$7$F%\"\"*7%F%F'\"#F 7&F%F'F)\"#\")7'F%F'F)F+\"$V#" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "map(x->add(i,i=x),h(3));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7'\" \"$\"#7\"#R\"$?\"\"$j$" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 49 "Of cour se it doesn't have to be that complicated:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "(y->[seq(add(y^j,j=1..i),i=1..5)])(3);" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#7'\"\"$\"#7\"#R\"$?\"\"$j$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "sel_gen := f -> g -> n -> select(f, mygen(g,n ));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(sel_genGf*6#%\"fG6\"6$%)oper atorG%&arrowGF(f*6#%\"gGF(F)F(f*6#%\"nGF(F)F(-%'selectG6$T$-%&mygenG6$ T&9$F(F(6&F'F5F.F:F(F(6$F'F:F(F(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "sel_gen(isprime)(x->2*x-1)(20);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7-\"\"$\"\"&\"\"(\"#6\"#8\"#<\"#>\"#B\"#H\"#J\"#P" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "map(unapply, map2( `^`, x, % ), x );" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7-f*6#%\"xG6\"6$%)operator G%&arrowGF'*$)9$\"\"$\"\"\"F'F'F'f*F%F'F(F'*$)F-\"\"&F/F'F'F'f*F%F'F(F '*$)F-\"\"(F/F'F'F'f*F%F'F(F'*$)F-\"#6F/F'F'F'f*F%F'F(F'*$)F-\"#8F/F'F 'F'f*F%F'F(F'*$)F-\"#F/F'F'F'f*F%F'F(F'*$) F-\"#BF/F'F'F'f*F%F'F(F'*$)F-\"#HF/F'F'F'f*F%F'F(F'*$)F-\"#JF/F'F'F'f* F%F'F(F'*$)F-\"#PF/F'F'F'" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "2 0 0" 1 }{VIEWOPTS 0 0 0 2 1 1805 1 1 1 1 } {PAGENUMBERS 0 1 2 33 1 1 }{RTABLE_HANDLES 10520236 }{RTABLE M7R0 I5RTABLE_SAVE/10520236X*%)anythingG6"6"[gl!!%!!!"("("""""%""*"#;"#D"#O"#\F& }