我目前正在使用BCPL编写OS课程编程,并希望在我的程序中编写一个简单的is_digit()函数进行验证。
我当前代码的代码段:
let is_digit(n) be {
if ((n >= '0') /\ (n <= '9')) then
resultis true;
}
我知道BCPL没有类型的概念,但我怎么能用语言完成这种事情呢?
传入数字会产生错误的结果,而不是预期的true
。
由于
答案 0 :(得分:2)
is_digit()是一个返回值而不是例程的函数,所以应该使用= VALOF而不是BE。否则,代码就可以了。
let is_digit(n) = valof {
.....
resultis true
}
答案 1 :(得分:0)
返回值的函数应该使用valof
而不是be
,后者(一个例程而不是一个函数)可以作为一个函数被调用,但是返回值您将从它那里得到的返回值是不确定的(a)。
此外,您应确保为每个代码路径返回一个有效值。此刻,非数字将不会执行RESULTIS
语句,并且我不确定是否会完全 发生这种情况(最好是确保安全)。
这意味着您所追求的是这种情况,请记住可能会有实现变体,例如&
或/\
的{{1}}和and
和{...}
作为块定界符-我使用了Martin最新手册中记录的那些:
$(...$)
(a)由于Martin Richards仍在与BCPL合作,this manual可能会在以后的任何问题中有所帮助(或查看他的home page以获取大量赠品)