Here's a classic. Can anyone write this in tacit? NB. Mortgage is Rate Months Loan
pmt=: 3 : 0 (x =: 0) pmt y : 'r t b'=:y D=:(1 + r % 1200) ^ t b*(r % 1200) * D % D - 1 ) pmt 5.75 240 12500 In 1961 I bought a house for $17,000. With a loan of $12,000 at 5.75 interest for 20 years. As a tenured teacher and a woman no bank would give me a mortgage but for 20 years I payed the previous woman owner $87.77. At the last payment it just so happened that I sold it. Linda -----Original Message----- From: Programming <[email protected]> On Behalf Of 'Mike Day' via Programming Sent: Saturday, September 8, 2018 1:45 PM To: [email protected] Subject: Re: [Jprogramming] Tacit form: How to handle intermediate Agreed on the "strong hint" in herona below. I got into that habit years ago in Fortran.... And Sorry for the unintentional extra characters. (I'm seeing A-circumflex where I'd typed space!) Just as well we're not talking APL! Mike On 08/09/2018 09:40, Martin Kreuzer wrote: > @Linda > > I think that your > heron=: 13 :'%:*/(s y),(s y)-y' > looks superior to my initial approach as it gathers _all four_ factors > under the (*/) Times Insert. > > btw "Hope you have good classes!" > > For quite some time, I don't have classes any more, but once in a > while do private tutoring; my last two students finished their > 'matura' at Easter this year (and one of them is on 'work & travel' in > New Zealand presently). > > @Mike > > Looking at your 'minor change' and the resulting tacit code, methinks > that (sy=. s - y) is giving the interpreter a much stronger hint that > there's a re-used intemediate result than the construct (' ... [ s2=. > .... ') I used initially. > > -M > > At 2018-09-07 09:43, you wrote: > >> Fair enough, it looks neat, but doesn't deal with Martin >> Kreuzer's original requirement to apply s just the once, ie how >> should we handle the intermediate result, s? >> >> On the other hand, David Lambert and others propose variations on how >> to factor the formula so as to use the result of s. >> >> It's usually easy in explicit form, harder in tacit form. It >> seems to me that using 13 : ... is very helpful in developing a tacit >> form, but it often fails to spot opportunities to save intermediate >> results. 13 : ... isn't an optimising compiler - or is it? It >> certainly doesn't spot the opportunity to save the repeated (s y) in >> Linda's example. >> >> Somewhat to my surprise, a minor change to Linda's explicit >> expression does result in a single applicaton of s in a quite elegant >> tacit form: >> >>    herona=: 13 :'%:*/sy,(sy=.s y)-y' >> >>    herona 3 4 5 >> >> >> >>    herona 5 12 13 >> >> 30 >> >>    herona >> >> [: %: [: */ s ([ , -) ] >> >> >> Cheers, >> >> Mike >> >> On 07/09/2018 08:19, Linda Alvord wrote: >>> It keeps getting simpler: >> >>> s=: 13 :'-:+/y' >>> heron=: 13 :'%:*/(s y),(s y)-y' >>> heron 3 4 5 >>> heron 4 5 6 >>> d >> >> >>> ;:'[: -: +/' >> >>> heron >> >>> ;:'[: %: [: */ s , s - ]' >>> >> >>> Explisit sentences are like English and the new language is the >>> computers J anguage. First learn the words and then learn to read >>> ghe ords in sentences. And just as you might when learning Spanish, >>> you might in time begin to speak it. >> >>> Linda >> >> >>> -----Original Message----- >>> From: Programming <[email protected]> On >>> Behalf Of David Lambert >>> Sent: Thursday, September 6, 2018 6:11 PM >>> To: programming <[email protected]> >>> Subject: Re: [Jprogramming] Tacit form: How to handle intermediate >> >>> A hook can save recomputation. >> >>> (computation with original data and reused me) (resuse me) >> >> >>>   test=: [: %: ([: -: +/) * [: */ ([: -: +/) - ] >> >>>   NB. play with the half factor >>>   f=:   4 %~ [: %: [: */ (([ , (- +:))~ +/) >> >>>   NB. shorter >> >>>   NB.   c o m p u t a t i o n   r e u s e >>>   g=:   ([: %: [: */ [ , -)~    ([: -: +/) >> >>>   g2=:  ([: %: [: */ [ , -)~ -:@:(+/) >> >> >>>   %/ (g , test) 3?@:$0 >>> 1 >> >> >>> On 09/04/2018 08:00 AM, [email protected] wrote: >>>> Date: Tue, 04 Sep 2018 11:50:43 +0000 >>>> From: Martin Kreuzer<[email protected]> >>>> To:[email protected] >>>> Subject: [Jprogramming] Tacit form: How to handle intermediate >>>> result..? >>>> Message-ID: >>>> <[email protected]> >>>> Content-Type: text/plain; charset="us-ascii"; format=flowed >>>> >>>> Hi all - >>>> >>>> To calculate the area of a flat triangle, using Heron's formula, >>>> A(a,b,c)= sqrt( s2*(s2-a)*(s2-b)*(s2-c) ) I wrote a simple function >>>> doing this: >>>> >>>> * get the three sides (as list input y) >>>> * compute the half perimeter s2 >>>> * build the differences s2-y >>>> * build product >>>> * take square root >>>> >>>> My explicit solution looks like this >>>> >>>> taher=: 13 : '%: s2 * */ s2-y [ s2=. -: +/ y' >>>> >>>> and works >>>> >>>> taher 3 4 5 >>>> 6 >>>> >>>> Suggested tacit version looks like this (and works too) >>>> >>>> tahert=: [: %: ([: -: +/) * [: */ ([: -: +/) - ] >>>> >>>> Q: Is there a way to reference the intermediate result of ([: -: >>>> +/) the half perimeter s2 within the tacit expression, as has been >>>> done in the explicit..? >>>> [Guess the interpreter takes care of this anyway; my question aims >>>> at whether a shorter formulation could be reached.] >>>> >>>> Thanks >>>> -M >>> -------------------------------------------------------------------- >>> -- >>> For information about J forums see >>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww >>> .jsoftware.com%2Fforums.htm&data=02%7C01%7C%7C8d2147240443485c7f >>> 8c08d61445ac18%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C63671868 >>> 6798916834&sdata=Yuys8QE3yMvBtUraCohR9dRgPugZDeNaNh3BoBCzJjU%3D& >>> amp;reserved=0 >>> -------------------------------------------------------------------- >>> -- For information about J forums see >>> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww >>> .jsoftware.com%2Fforums.htm&data=02%7C01%7C%7Cfbcf68689bed4e31e2 >>> 8108d615b2cfcc%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C63672025 >>> 5064176871&sdata=0sleKYElksLSP%2BOT8BYYtyzcuL3GTBuL14taSrgJQS8%3 >>> D&reserved=0 >> >> >> >> --- >> This email has been checked for viruses by Avast antivirus software. >> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww >> .avast.com%2Fantivirus&data=02%7C01%7C%7Cfbcf68689bed4e31e28108d6 >> 15b2cfcc%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636720255064176 >> 871&sdata=kMQGWHLjMejRbJOuSn5EvWU4j39TqVPCX73QNKV6k7g%3D&rese >> rved=0 >> --------------------------------------------------------------------- >> - For information about J forums see >> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww. >> jsoftware.com%2Fforums.htm&data=02%7C01%7C%7Cfbcf68689bed4e31e281 >> 08d615b2cfcc%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C63672025506 >> 4176871&sdata=0sleKYElksLSP%2BOT8BYYtyzcuL3GTBuL14taSrgJQS8%3D&am >> p;reserved=0 > > ---------------------------------------------------------------------- > For information about J forums see > https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.j > software.com%2Fforums.htm&data=02%7C01%7C%7Cfbcf68689bed4e31e28108 > d615b2cfcc%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C63672025506417 > 6871&sdata=0sleKYElksLSP%2BOT8BYYtyzcuL3GTBuL14taSrgJQS8%3D&re > served=0 ---------------------------------------------------------------------- For information about J forums see https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=02%7C01%7C%7Cfbcf68689bed4e31e28108d615b2cfcc%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636720255064176871&sdata=0sleKYElksLSP%2BOT8BYYtyzcuL3GTBuL14taSrgJQS8%3D&reserved=0 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
