Is there a way to replace a built-in function?

Graham Samuel livfoss at mac.com
Mon Jan 5 11:38:48 EST 2015


Hi Craig - thanks for the reply.

Yes, that’s what I’m having to do - but since my app allows the user to write formulae directly, I need to cheat so the user writes

ln(x)

and I intervene and redirect this to my adjusted version of the function, myLn. Luckily at the heart of the my app is a parser which can host this intervention, so it’s almost OK - as long as the user doesn’t take the option to look at the parser output. Still, it would have been nice to be able to redefine it: of course, if I did that I would either have to recode the fundamentals of the original function or somehow access it despite having replaced it from the point of view of the outside world.

Graham

> On 5 Jan 2015, at 15:41, dunbarx at aol.com wrote:
> 
> Graham
> 
> 
> I thought the ability of HC to allow this was a plus. The best example was the "round" function, which, with a ".5" in the decimal portion of an argument, alternately rounded the integer portion up or down depending on whether that integer was odd or even.
> 
> 
> Most people, like me, intercepted that function, and always rounded a ".5" up, like I was taught.
> 
> 
> Anyway, when you ask for a "trick", why not just create "myLn". After all, you are the author.
> 
> 
> Craig 
> 
> 
> 
> -----Original Message-----
> From: Graham Samuel <livfoss at mac.com>
> To: How to use LiveCode <use-livecode at lists.runrev.com>
> Sent: Mon, Jan 5, 2015 7:55 am
> Subject: Is there a way to replace a built-in function?
> 
> 
> On the face of it, it’s impossible to replace a built-in function in LC. For 
> example, take the function ln(x) - that’s natural logarithm. I’d like to 
> redefine ln(x), but I can’t because the compiler won’t let me use a reserved 
> word in a function definition.
> 
> I wonder if anyone can suggest a trick to allow a redefinition like this. If 
> not, then roll on Widgets.
> 
> Graham
> 
> PS In case you want to know why I want to redefine this function, it’s for the 
> following reason.  Generally, mathematicians say that ln(0) is undefined, 
> whereas the limit as x approaches zero is minus infinity. This is a bit subtle, 
> and LiveCode takes no real notice of this, so that in LC, ln(0) yields “-inf”. 
> Despite a contrary definition in the LC dictionary, this text is then regarded 
> as a number, which can cause confusion, at least to me. So my new ln(x) would 
> yield undefined for ln(0) and would use a symbol for minus infinity which LC 
> would not then recognise as a number.
> _______________________________________________





More information about the use-livecode mailing list