[scilab-Users] predefined functions in Scilab

Mathieu Dubois mathieu.dubois at limsi.fr
Fri Sep 23 10:53:21 CEST 2011


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...

> Regards,
>
>
>
>
>
>         What is going wrong? Am I missing something.
>         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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20110923/07559201/attachment.htm>


More information about the users mailing list