我总是对Clojure中的Symbols和Vars感到困惑.例如,可以肯定地说+是用于表示var的符号,并且此var指向一个可以添加数字的函数的值吗?
那么当我在REPL中输入"+"时,会一步一步地发生什么?
我正在编写一个大型的TypeScript类,我将noImplicitAny设置为true.有没有办法在同一行上声明相同类型的多个变量?
我想将x和y声明为数字,例如"x,y:number".但是编译器不喜欢那个或者我尝试过的任何其他东西.有没有更好的替代"x:number; y:number"?
也许你可以帮我在文档中找到这个.我正在使用pound-quote能够在执行之前传递未评估的函数名称.例如:
(#'cons 1 ())
;(1)
(defn funcrunner [func a b]
(func a b))
(funcrunner cons 'a ())
;(a)
(funcrunner 'cons 'a ())
'()
(funcrunner #'cons 'a ())
;(a)
#'cons
;#'clojure.core/cons
(resolve (symbol 'cons))
;#'clojure.core/cons
Run Code Online (Sandbox Code Playgroud)
我的猜测是这是一个读者宏.
我的问题是(a)英镑报价(#')的简写是什么?(b)你能解释一下它在做什么吗?(c)你能在文档中找到它吗?(d)它实际上是解析和符号功能的简写吗?
PS - 对于那些不在美国的人 - #也称为'哈希'或'交叉哈希'.
PPS - 我知道我的例子使得这需要多余.我很想知道这是完全冗余还是有特定用例.
我使用three.js
如何控制渲染顺序?假设我有三个平面几何,并且想要以特定顺序渲染它们,而不管它们的空间位置如何.
谢谢
[编辑:澄清了box-sizing:border-box似乎不适用,因为我使用的是绝对定位]
以下代码说明了我的问题.我正在使用绝对定位,因为我发现这对于基于流的布局更为棘手,但我愿意接受建议.我想要的是围绕任意元素的边界,没有边界影响节点的定位.(边框可能会被内容剪辑或覆盖,但这并不重要.)
特别是,父项的边界必须能够与其子项的边界重叠,这不是默认行为.CSS box-sizing属性可以设置为border-box来实现我想要的效果,但只有(我相信)内联元素.它对具有绝对定位的元素没有影响(据我所知).
因此,我的方法是使用负边距来抵消边界宽度的孩子的位置.这确实似乎抵消了边界存在的影响,但不幸的是,这种方式并不是在缩放因子之间保持一致的.在大规模,事情看起来不错.在Chrome浏览器的默认浏览器中,元素定位稍微偏离(它们看起来太高); 如果我变小,那么元素位置会向另一个方向移动.
但如果我完全删除边框,布局似乎可以扩展.
所以我的问题是:是否有可靠(可扩展)的方式在HTML元素上设置边框而不影响元素的定位?
[在这个例子中,我为一些边框使用了不同的颜色.我想只看到黑色,但在某些变焦处我可以看到红色和绿色边框,表明元素的位置受到边框存在的影响.
谢谢Roly .bordered {position:absolute; 身高:18px; 边框:2px固体; 保证金:-2px; }
<span class="bordered" style="width: 55px; left: 30px;">
<span class="bordered" style="width: 8px; left: 0;">
(
</span>
<span class="bordered" style="border-color: green; width: 47px; left: 8px;">
<span class="bordered" style="border-color: red; width: 39px; left: 0;">
<span class="bordered" style="width: 8px; left: 0;">
5
</span>
<span class="bordered" style="width: 31px; left: 8px;">
<span class="bordered" style="width: 23px; left: 8px;">
Nil
</span>
</span>
</span>
<span class="bordered" style="width: 8px; left: 39px;"> …Run Code Online (Sandbox Code Playgroud) 是否有适用于TypeScript的功能合理,最新的Emacs模式?似乎没有官方的,或者至少是官方的,正在积极更新.
有一个微软一个在这里,但它是旧的,不纳入最新的语言的变化(例如boolean在除了关键字bool).这个看起来类似,这个声称更复杂.
都遭受以下问题.在下面的示例中,borderRadius颜色与borderWidthand 不同fontSize,可能是因为语法着色不能正确处理单个var声明引入的多个变量.
var borderRadius: number = 4,
borderWidth: number = 2,
fontSize: number = 9;
Run Code Online (Sandbox Code Playgroud) 是否有可能定义一个简单的相等的句法概念(类似于GHC可能自动派生为EqHaskell 98类型的实例),而无需明确证明每个数据构造函数是单射的,或者做类似的事情,例如定义撤销每个构造函数和使用cong?
换句话说,是否有可能更直接地利用数据构造函数的注入性,而不是必须为每个构造函数引入一个辅助函数?
以下以自然数为例.
module Eq where
open import Function
open import Relation.Binary
open import Relation.Binary.PropositionalEquality
open import Relation.Nullary
data ? : Set where
zero : ?
suc : ? ? ?
-- How to eliminate these injectivity proofs?
suc-injective : ? {n m} ? suc n ? suc m ? n ? m
suc-injective refl = refl
_?_ : Decidable {A = ?} _?_
zero ? suc _ = no (? ())
suc …Run Code Online (Sandbox Code Playgroud) 为什么这是合法的TypeScript?
var x: number = 5
var y: Object = x
Run Code Online (Sandbox Code Playgroud)
肯定有一个数字不是Object.有人可能怀疑x被隐式强制(自动装箱)到一个对象,但没有:
if (!(y instanceof Object)) {
console.log(typeof y)
}
Run Code Online (Sandbox Code Playgroud)
版画
number
Run Code Online (Sandbox Code Playgroud)
作为记录:
$ tsc --version
Version 1.8.10
Run Code Online (Sandbox Code Playgroud) 常识表明,子类型在返回类型方面应该是协变的,但在参数类型方面应该是逆变的.因此,应该拒绝以下内容,因为严格协变的参数类型E.f:
interface C {
f (o: C): void
}
interface D extends C {
g (): void // give D an extra service
}
class E implements C {
// implement f with a version which makes stronger assumptions
f (o: D): void {
o.g() // rely on the extra service promised by D
}
}
// E doesn't provide the service required, but E.f will accept
// an E argument as long as I invoke …Run Code Online (Sandbox Code Playgroud) 是否有任何"推荐"的库可以在Agda中提供易于使用的基本类别理论形式化?Agda标准库似乎在这方面提供的很少.
我正在寻找具有低入门门槛的东西,类似于如何使用Semigroup标准库中定义的代数结构.
例如,在我当前的项目中有几种态射的概念,并且组合和身份的重载语法变得笨拙.自然要做的是引入一个合适的记录类型,并使用Agda的"实例参数"机制来模拟一个Morphism类型类.但毫无疑问,这必须是多次发明的轮子.(好吧,Morphism在标准库中调用了一个可能适合此目的的结构,所以这不一定是最好的例子,但你明白了.)
我知道这个库看起来很全面,但似乎并不特别活跃.