Scheme 在球拍/方案中考虑具有副作用的功能的惯例是什么?
显然,在Racket/Scheme中,在执行变异的函数名后面加一个感叹号是一种惯例。例如,在球拍中,Scheme 在球拍/方案中考虑具有副作用的功能的惯例是什么?,scheme,racket,convention,Scheme,Racket,Convention,显然,在Racket/Scheme中,在执行变异的函数名后面加一个感叹号是一种惯例。例如,在球拍中,set,框集,向量集,等等。某些功能有副作用,如打印,但由于这些副作用是“无害的”,我理解为什么它们通常不附带感叹号 然而,这项公约被任意违反。例如,它们可以清楚地执行变异,但它们的名字后面没有“变异标记”。这在某种程度上是合理的,因为它们是通道,显然是基于突变的,所以“!”是多余的 然而,这并不是所有事情的正当理由。球拍的提供和功能,都有明显的标记,但并没有!这仅仅是一个孤立的违反公约的行为,还
set代码>,框集代码>,向量集代码>,等等。某些功能有副作用,如打印,但由于这些副作用是“无害的”,我理解为什么它们通常不附带感叹号
然而,这项公约被任意违反。例如,它们可以清楚地执行变异,但它们的名字后面没有“变异标记”。这在某种程度上是合理的,因为它们是通道,显然是基于突变的,所以“!”是多余的
然而,这并不是所有事情的正当理由。球拍的提供和功能,都有明显的标记,但并没有!这仅仅是一个孤立的违反公约的行为,还是有一些规则
我问这个问题主要是为了确定我应该如何在自己的代码中命名函数。我什么时候应该使用感叹号,什么时候不应该?我承认这只是一个惯例,而不是一个规则,可能会有点不一致,但我还是想知道最佳实践是什么。我不认为#!racket有自己的命名约定,但根据您的阅读:
引起副作用的过程和语法形式的名称
以感叹号(!)结尾。这些包括一套!和
向量集!。在技术上执行输入或输出的过程会导致
副作用,但它们的名字是这条规则的例外
在程序中,它说的是过程代码>表示“严重副作用”。依我看,这意味着副作用是程序的主角,如set car代码>和设置
whileread
返回一个值,该值可能是read的主要功能