In a hypothetical language :)

zero? x or success? (x := x+1)

Le ven. 27 janv. 2023 à 09:23, Grégory Vanuxem <[email protected]> a écrit :
>
> Hello Ralf,
>
> For me it's not an issue for the computational world.
>
> I explain, and as an example, in the past I wrote code for FRiCAS with
> GCL (lost code because of a hdd problem).
> It was an interface to BLAS totally written with 'and' and 'or', I
> love that and I am always inclined to do that instead, for example, of
> using (progn ...), (if ...)... I sent the code privately to Tim but I
> had no return, I guess this was because the code was unreadable :) A
> game.
>
> So, instead of using:
> (if (that-is not-true)
>   (i-will-not-do-what-i-am-supposed-to-do)
>   ; else
>   (i-will-do-my-job))
>
> I used 'and' and 'or':
> (or (and (that-is not-true) (i-will-not-do-what-i-am-supposed-to-do))
>   (i-will-do-my-jiob))
>
> What I mean is, with imperative languages, statements are evaluated,
> executed and change program's state, your example, and eventually
> returns something. It's not from my point of view like pure
> mathematical logic in its restrictive sense.
> With mathematical logic, and also in mathematical articles, you read,
> check, and use the theorem in another "article" if true
>  and interesting :)
>
> So, even, if in pure boolean logic, 'and' and 'or' ('xor') are used
> with only true and false, with imperative programming language this is
> not only that. In your example, my point of view is that the important
> thing to take into account is not the Type but what is done.
>
> >    zero? x or (x := x+1)
> can be translated to
> if not zero? x then x:= x+1
>
> What I have in mind is for libraries and not for the interpreter who
> shows if required and needs the output type.
> So in your last example I agree with the interpreter it *evaluates*
> the first statement but since it's false it *evaluates* the second
> statement, but the output type of it is incorrect so it "barfs".
>
> Just my two cents, and I don't know if I will be understood.
> ____
> Greg
>
>
> Le jeu. 26 janv. 2023 à 22:03, Ralf Hemmecke <[email protected]> a écrit :
> >
> > Is the following OK?
> >
> > (325) -> 4 or 3
> >
> >     Argument number 1 to "or" must be a Boolean.
> >
> > (325) -> 4 or true
> >
> >     Argument number 1 to "or" must be a Boolean.
> >
> > (325) -> true or 3
> >
> >     (325)  true
> >
> > (326) -> zero? 3 or 3
> >
> >     Argument number 2 to "or" must be a Boolean.
> >
> > (326) -> zero? 0 or 3
> >
> >     (326)  true
> >
> > (327) -> true or "foo"
> >
> >     (327)  true
> >
> > Well, it is clear that a shortcut happens here, but I wonder whether we
> > want the language to allow "or" to take non-boolean argument.
> >
> > This also is a problem in SPAD
> >
> > )abbrev package FOO Foo
> > Foo: with
> >    foo: Integer -> Integer
> >   == add
> >    foo(x: Integer): Integer ==
> >      zero? x or
> >        return -13
> >      return x
> >
> > The following compiles and works as well.
> >
> > )abbrev package FOO Foo
> > Foo: with
> >    foo: Integer -> Integer
> >   == add
> >    foo(x: Integer): Integer ==
> >      zero? x or (x := x+1)
> >      return x
> >
> > But what exactly is the type of
> >
> >    zero? x or (x := x+1)
> >
> > ?
> >
> > Should I put this into the github issues?
> >
> > Ralf
> >
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "FriCAS - computer algebra system" group.
> > To unsubscribe from this group and stop receiving emails from it, send an 
> > email to [email protected].
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msgid/fricas-devel/abf1343a-458b-9990-4bd6-0344824bc468%40hemmecke.org.

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/fricas-devel/CAHnU2daHD%2BK2Cd%3DPMD1sJGMAfViYUdxtmtdOC4zo2MtSVMybqA%40mail.gmail.com.

Reply via email to