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, programming-requ...@forums.jsoftware.com wrote:
Date: Tue, 04 Sep 2018 11:50:43 +0000 From: Martin Kreuzer<i...@airkreuzer.com> To:programm...@jsoftware.com Subject: [Jprogramming] Tacit form: How to handle intermediate result..? Message-ID: <5b8e71a5.1c69fb81.65e5c.4a9esmtpin_added_miss...@mx.google.com> 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 http://www.jsoftware.com/forums.htm