小编Rol*_*oly的帖子

Clojure中符号与变量的区别

我总是对Clojure中的Symbols和Vars感到困惑.例如,可以肯定地说+是用于表示var的符号,并且此var指向一个可以添加数字的函数的值吗?

那么当我在REPL中输入"+"时,会一步一步地发生什么?

  1. 符号被限定为命名空间,在本例中为clojure.core
  2. 然后在一些符号表中有+指向var的信息
  3. 评估此var时,结果是函数值?

clojure

44
推荐指数
3
解决办法
5573
查看次数

声明具有相同类型的多个TypeScript变量

我正在编写一个大型的TypeScript类,我将noImplicitAny设置为true.有没有办法在同一行上声明相同类型的多个变量?

我想将x和y声明为数字,例如"x,y:number".但是编译器不喜欢那个或者我尝试过的任何其他东西.有没有更好的替代"x:number; y:number"?

typescript

43
推荐指数
5
解决办法
3万
查看次数

在Clojure中运行解析和符号函数的pound-quote(hash-quote,#')?

也许你可以帮我在文档中找到这个.我正在使用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 - 我知道我的例子使得这需要多余.我很想知道这是完全冗余还是有特定用例.

eval clojure

16
推荐指数
2
解决办法
6090
查看次数

three.js:如何控制渲染顺序

我使用three.js

如何控制渲染顺序?假设我有三个平面几何,并且想要以特定顺序渲染它们,而不管它们的空间位置如何.

谢谢

3d optimization rendering three.js

16
推荐指数
1
解决办法
2万
查看次数

CSS边界干扰绝对定位

[编辑:澄清了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)

css position border

15
推荐指数
2
解决办法
2万
查看次数

适用于TypeScript的最新Emacs模式

是否有适用于TypeScript的功能合理,最新的Emacs模式?似乎没有官方的,或者至少是官方的,正在积极更新.

有一个微软一个在这里,但它是旧的,不纳入最新的语言的变化(例如boolean在除了关键字bool).这个看起来类似,这个声称更复杂.

都遭受以下问题.在下面的示例中,borderRadius颜色与borderWidthand 不同fontSize,可能是因为语法着色不能正确处理单个var声明引入的多个变量.

var borderRadius: number = 4,
    borderWidth: number = 2,
    fontSize: number = 9;
Run Code Online (Sandbox Code Playgroud)

emacs typescript

9
推荐指数
2
解决办法
2960
查看次数

平等测试没有明确证明数据构造函数是单射的

是否有可能定义一个简单的相等的句法概念(类似于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)

equality algebraic-data-types agda

9
推荐指数
1
解决办法
439
查看次数

TypeScript:为什么一个数字可分配给Object类型的引用?

为什么这是合法的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)

primitive coercion subtyping typescript

7
推荐指数
1
解决办法
319
查看次数

TypeScript:子类型和协变参数类型

常识表明,子类型在返回类型方面应该是协变的,但在参数类型方面应该是逆变的.因此,应该拒绝以下内容,因为严格协变的参数类型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)

covariance subtyping typescript

7
推荐指数
1
解决办法
947
查看次数

Agda的分类库?

是否有任何"推荐"的库可以在Agda中提供易于使用的基本类别理论形式化?Agda标准库似乎在这方面提供的很少.

我正在寻找具有低入门门槛的东西,类似于如何使用Semigroup标准库中定义的代数结构.

例如,在我当前的项目中有几种态射的概念,并且组合和身份的重载语法变得笨拙.自然要做的是引入一个合适的记录类型,并使用Agda的"实例参数"机制来模拟一个Morphism类型类.但毫无疑问,这必须是多次发明的轮子.(好吧,Morphism在标准库中调用了一个可能适合此目的的结构,所以这不一定是最好的例子,但你明白了.)

我知道这个库看起来很全面,但似乎并不特别活跃.

standard-library agda category-theory

6
推荐指数
1
解决办法
462
查看次数