[scilab-Users] predefined functions in Scilab
Mathieu Dubois
mathieu.dubois at limsi.fr
Sat Sep 24 15:16:18 CEST 2011
Le 24/09/2011 13:18, Manjusha Joshi a écrit :
>
>
> On Fri, Sep 23, 2011 at 2:23 PM, Mathieu Dubois <mathieu.dubois at limsi.fr
> <mailto:mathieu.dubois at limsi.fr>> wrote:
>
> __
> On 09/23/2011 10:32 AM, Manjusha Joshi wrote:
>> Thanks Mathieu, for pointing out the difference.
>>
>> Please go through the mail for in line reply.
>>
>> On Fri, Sep 23, 2011 at 1:25 PM, Mathieu Dubois
>> <mathieu.dubois at limsi.fr <mailto:mathieu.dubois at limsi.fr>> wrote:
>>
>>
>>
>> Le 23/09/2011 02:54, Manjusha Joshi a écrit :
>>
>> Hello
>>
>>
>> For your problem you should have a look at the funcprot
>> function.
>>
>> However, the default mode is to issue a warning when
>> redefining
>> predefined functions.
>>
>> Thanks for reply.
>>
>> I tried following
>> A =
>>
>> 2. 3. 4. 78.
>>
>>
>> -->funcprot(2)
>>
>>
>> -->sum(A)
>> ans =
>>
>> 87.
>>
>> -->sum=98
>> !--error 223
>> It is not possible to redefine the sum primitive this way
>> (see clearfun).
>>
>>
>> -->deff('y=f(x)','y=x*x')
>>
>> -->deff('y=f(x)','y=2*x*x')
>> !--error 111
>> Trying to re-define function f.
>>
>>
>> User defined function should be redefined. At the same
>> time scilab
>> predefined functions should not.
>> I tried following:
>>
>> -->clearfun f
>> ans =
>>
>> F
>>
>> -->clearfun sum
>> ans =
>>
>> T
>> Now it is allowing to redefine sum which should be
>> protected. On the
>> other hand it is not allowing to redefine the function f.
>> Which one
>> needs to redefine several times in one session.
>>
>> clearfun is to clear predefined functions like sum (maybe it
>> should be called clearpredef).
>>
>> To redefine your function f, use clear f.
>> You can check that f exists with the exists function (not
>> mandatory).
>>
>> True! Variables and user defined function can be cleared by clear
>> command.
>>
>>
>> -->exists('f')
>> ans =
>>
>> 1.
>> works fine with user defined functions. How ever, which are
>> already known to user since, it is defined by user.
>> How ever, Scilab defined functions, which I will call as
>> predefined functions are not all known to user, so there is risk
>> of pre defined function
>> get assigned by user by mistake.
>>
>>
>> -->exists('prod')
>> ans =
>>
>> 0.
>>
>> Is there any way to check that (for example) prod is a predefined
>> function?
> I'm not sure to understand: if you use funcprot(2) all functions are
> protected so there is no assignement by mistake. Then you can define
> your function f and clear it when needed...
>
>
> Yup! This will work.
OK.
> I think funcprot(2) should be default mode.
Hum, you can always add this in your startup file or in the systme-wide
startup file (see help("startup")).
> Regards
>
>
>>
>>
>>
>> On 09/22/2011 12:51 PM, Manjusha Joshi wrote:
>>
>> Hello,
>>
>> sum, prod etc. are predefined functions in scilab.
>>
>> if some one with out knowing the name of the
>> predefind function
>> use it as avariable name, as follows:
>>
>>
>> -->A=[2,3,4,78]
>> A =
>>
>> 2. 3. 4. 78.
>>
>> -->sum(A)
>> ans =
>>
>> 87.
>>
>> -->sum=96
>> sum =
>>
>> 96.
>>
>> -->sum(A)
>> !--error 21
>> Invalid index.
>>
>>
>>
>> scilab not even complains. In old versions at
>> least there was
>> some error message.
>>
>> This happens in the current session only.
>> Is there any way to protect the predefined
>> functions and their
>> names?
>> I think we should declare these function names as
>> predefined
>> functions.
>>
>>
>>
>>
>>
>>
>>
>>
>> --
>>
>>
>> -Manjusha
>
>
>
>
> --
> Manjusha S. Joshi
> Mobile: 09822 319328
> blog:http://manjushajoshi.wordpress.com/
>
>
>
More information about the users
mailing list