我想建立一个问答页面.
它不是一个列表,它不是表格数据,我不确定是否或如何使用<dl><dt><dd>.
构建它并用css格式化它的最佳语义方法是什么?
我多次读到这个词"厨房水槽",大多数时候我从github下载东西,有一个名为"厨房水槽"的文件夹.但我不知道这个的确切含义.
任何人都可以解释厨房水槽的含义是什么?
我正在尝试根据我在Haskell中编写的程序将一些指称语义编码到Agda中.
data Value = FunVal (Value -> Value)
| PriVal Int
| ConVal Id [Value]
| Error String
Run Code Online (Sandbox Code Playgroud)
在阿格达,直接翻译将是;
data Value : Set where
FunVal : (Value -> Value) -> Value
PriVal : ? -> Value
ConVal : String -> List Value -> Value
Error : String -> Value
Run Code Online (Sandbox Code Playgroud)
但是我得到了与FunVal有关的错误,因为;
值并非严格为正,因为它出现在Value定义中构造函数FunVal类型中箭头的左侧.
这是什么意思?我可以用Agda编码吗?我是以错误的方式去做的吗?
谢谢.
我经常想知道正确使用 <br>换行符.似乎通常它们被错误地用于定位或清除应该使用CSS的内容.
W3schoools.org表示<br>用于空行,但不用于创建或分隔段落.回顾一下W3C HTML5规范草案,<br>当内容需要换行符时会更加清晰,例如地址行或诗歌中的空行,作者有意.
但我仍然有兴趣进一步澄清或输入任何其他人.我经常发现自己选择不使用<br>标签,而只是使用所需的清除,边距,填充等样式元素来创建所需的空间.
并不是说这是非常重要的,但这里有一个让我思考这个问题的例子,一个流行的("权威的")网站使用了一个<br>我不确定是非常语义的网站.在这里,我只是<a>通过CSS 清除它的兄弟姐妹:
<p>Lorem ipsum dolor sit amet, consectetur tempor laborum.</p>
<br>
<a href="#readmore">more >></a>
Run Code Online (Sandbox Code Playgroud) 我现在正在编写一本教科书,它将纯方法定义为:
"一种静态方法,仅取决于其参数而不依赖于其他数据"
如果一个实例方法不是静态的(只要它不修改参数并且没有像打印那样的"副作用"),那么它是不可能的?
我知道纯方法是纯粹的,返回值只取决于参数而不依赖于任何其他状态,所以可能调用实例方法意味着从调用方法的对象中获取的变量不算作参数但作为另一个"状态"?
除此之外,我无法想到为什么非静态方法不能成为纯方法.
这是一个例子:
public class Rational {
private int numer;
private int denom;
public Rational() {
this.numer = 0;
this.denom = 1;
}
public Rational(int numer, int denom) {
this.numer = numer;
this.denom = denom;
}
}
Run Code Online (Sandbox Code Playgroud)
以上定义了一个Rational类
然后,您可以在Rational类中编写一个方法,该方法通过下面的"方法一"或"方法二" 返回一个Rational对象double.
方法一:
public double toDouble() {
double x = this.numer;
double y = this.denom;
double fprat = x / y;
return fprat;
}
Run Code Online (Sandbox Code Playgroud)
方法二:
public static double toDouble(Rational …Run Code Online (Sandbox Code Playgroud) 如果变量的值x最初为0,则表达式x += x += 1将在C中计算为2,在Javascript中计算为1.
C的语义对我来说似乎很明显:x += x += 1被解释为x += (x += 1)反过来相当于
x += 1
x += x // where x is 1 at this point
Run Code Online (Sandbox Code Playgroud)
Javascript解释背后的逻辑是什么?什么规范强制执行这种行为?(顺便说一句,应该注意Java在这里与Javascript一致).
更新:
事实证明,x += x += 1根据C标准,表达式具有未定义的行为(感谢ouah,John Bode,DarkDust,Drew Dormann),这似乎破坏了一些读者的问题的全部要点.通过在其中插入标识函数,可以使表达式符合标准:x += id(x += 1).可以对Javascript代码进行相同的修改,问题仍然如所述.假设大多数读者能够理解"非标准兼容"制定背后的观点,我会保留它,因为它更简洁.
更新2:事实证明,根据C99,身份函数的引入可能无法解决模糊性.在这种情况下,亲爱的读者,请将原始问题视为与C++而不是C99有关,其中"+ ="现在可能最安全地被视为具有唯一定义的操作序列的可重载运算符.也就是说,x += x += 1现在相当于operator+=(x, operator+=(x, 1)).对于通向标准的漫长道路感到抱歉.
通常,我已经看过表单,但我发现对相关的数据集进行分组很有帮助(例如,当您在页面上有多个表时,使用每个表或相关表组周围的字段集来定义可见含义和一个组名(图例)).这是否滥用了fieldset标签,在我的使用中,它不再具有语义含义?
这里描述的Haskell的底部被认为是任何有错误,未终止或涉及无限循环的计算,是任何类型的......这是否特定于Haskell?我们知道在莱迪思理论中,还有一个概念Bottom......并且不应该根据定义的顺序定义底部?
这个问题源于一个挑战布伦特Yorgey提出在OPLSS:写一个函数f :: (Int -> Int) -> Bool区分f undefined的f (\x -> undefined).我们所有的答案要么被使用,seq要么类似于令人厌恶的爆炸模式seq.例如:
f :: (Int -> Int) -> Bool
f g = g `seq` True
*Main> f undefined
*** Exception: Prelude.undefined
*Main> f (\x -> undefined)
True
Run Code Online (Sandbox Code Playgroud)
该GHC评上seq说,
e1 `seq` e2
Run Code Online (Sandbox Code Playgroud)
过去常见的
case e1 of { _ -> e2 }
Run Code Online (Sandbox Code Playgroud)
所以我尝试了手工制作.它不起作用:
f' g = case g of { _ -> True }
*Main> f' undefined
True
*Main> …Run Code Online (Sandbox Code Playgroud) 受这个关于缓存小整数和字符串的问题的启发,我发现了以下我不理解的行为.
>>> 1000 is 10**3
False
Run Code Online (Sandbox Code Playgroud)
我以为我理解了这种行为:1000是很大的缓存.1000和10**3指向2个不同的对象.但我错了:
>>> 1000 is 1000
True
Run Code Online (Sandbox Code Playgroud)
因此,Python可能会将计算与"正常"整数区别对待.但这种假设也是不正确的:
>>> 1 is 1**2
True
Run Code Online (Sandbox Code Playgroud)
如何解释这种行为?
semantics ×10
haskell ×3
html ×3
css ×2
types ×2
agda ×1
android ×1
appcelerator ×1
c ×1
evaluation ×1
fieldset ×1
interpreter ×1
ios ×1
java ×1
javascript ×1
markup ×1
puzzle ×1
python ×1
reference ×1
w3c ×1