没什么可补充的; 在qtScript上JavaScript的setTimeout相当于什么?
什么是使用JS自己的类型编译为简短,可读和可修改的JS的lisp方言?
ImageMagick正在使用大量内存来转换PDF文件 - 超过2GB.我正在使用的命令是:
convert -density 250 -resize 1280x myfile.pdf -interlace plane -strip -quality 40 -alpha flatten myfolder/myfile-%03d.jpg
Run Code Online (Sandbox Code Playgroud)
如何改进?我有1GB的限制,否则这个过程会被无情地杀死.):
我是GitHub的新手.有人提交了5次提交的拉取请求.但是其中3个有一点虫子,所以必须等待.如何为我的项目挑选其中的2个?
这些打字规则出现在"关于基本线性逻辑的表达性:表征Ptime和指数时间层次"论文中:
从"Milner-Hindley的哪个部分你不明白?" Stack Overflow问题,我可以阅读一些英文版本,但仍然很难弄清楚如何制作一个类型检查器.这是我尝试阅读前4条规则:
Ax:作为公理,如果x有A型,那么x有A型.(不是很明显吗?)
切割:如果上下文?证明t has type A,和另一种情况下?,扩展了断言x has type A,证明u has type B,那么这两个上下文一起证明的所有出现的取代x通过t在u已键入B.(那是什么意思呢?为什么有两种情况,额外的情况来自何处?另外,这似乎是一种替代规则,但如果替代不是一个术语,而是一种操作呢?经典米尔纳 - 欣德利没有这样的东西;对于App来说它只是一个非常简单的规则.)
弱:如果证明了上下文t has type A,那么用语句扩展的上下文x has type B仍然可以证明t has type A.(再说一次,这不是很明显吗?)
对照:如果上下文扩展了x1 has type !A和x2 has type !A证明t has type B,那么这种情况下,扩展了x has type …
我正在将一种语言的编译器优化为 JavaScript,并发现了一个非常有趣的案例:
function add(n,m) {
return n === 0 ? m : add(n - 1, m) + 1;
};
var s = 0;
for (var i = 0; i < 100000; ++i) {
s += add(4000, 4000);
}
console.log(s);
Run Code Online (Sandbox Code Playgroud)
它需要2.3s在我的机器上完成[1]。但是如果我做一个很小的改变:
function add(n,m) {
return (() => n === 0 ? m : add(n - 1, m) + 1)();
};
var s = 0;
for (var i = 0; i < 100000; ++i) {
s += add(4000, 4000);
} …Run Code Online (Sandbox Code Playgroud) 例如,从一组英语单词开始,是否有一个结构/算法允许快速检索字符串,如"light"和"tight",使用"right"作为查询?即,我想检索与查询字符串的Levenshtein距离较小的字符串.
在Haskell中,据说任何ADT都可以表示为产品的总和.我试图找到一个平坦的类型,它是同构的Tree,对Data.Tree.
Tree a = Node a [Tree a] -- has a nested type (List!)
Run Code Online (Sandbox Code Playgroud)
我想为没有嵌套类型的Tree编写功能相同的定义:
Tree = ??? -- no nested types allowed
Run Code Online (Sandbox Code Playgroud)
为此,我尝试编写类型代数的递归关系:
L a = 1 + a * L a
T a = a * L (T a)
Run Code Online (Sandbox Code Playgroud)
内联L,我有:
T a = a * (1 + T a * L (T a))
T a = a * (1 * T a * (1 + T a * L (T a)))
T a = …Run Code Online (Sandbox Code Playgroud) 让这些数据类型分别代表一元和二元自然数:
data UNat = Succ UNat | Zero
data BNat = One BNat | Zero BNat | End
u0 = Zero
u1 = Succ Zero
u2 = Succ (Succ Zero)
u3 = Succ (Succ (Succ Zero))
u4 = Succ (Succ (Succ (Succ Zero)))
b0 = End // 0
b1 = One End // 1
b2 = One (Zero End) // 10
b3 = One (One End) // 11
b4 = One (Zero (Zero End)) // 100
(Alternatively, one could use …Run Code Online (Sandbox Code Playgroud) 这min下面的定义适用于两个教堂数量和返回至少大.每个数字都成为一个延续,将其pred传递给另一个,zig和zag,直到达到零.此外,每次调用时,其中一个数字会将f附加到结果中,因此,最后,您将获得(\ f x -> f (... (f (f x)) ...))右边的'f'的数量是第一个连续调用的次数.
min a b f x = (a_continuator b_continuator)
a_continuator = (a (\ pred cont -> (cont pred)) (\ cont -> x))
b_continuator = (b (\ pred cont -> (f (cont pred))) (\ cont -> x))
Run Code Online (Sandbox Code Playgroud)
似乎min无法在System-F上输入.例如,为了在GHC上运行它,我不得不使用unsafeCoerce两次:
import Unsafe.Coerce
(#) = unsafeCoerce
min' = (\ a b f x -> (a (\ p c -> (c # p)) (\ c -> x) (b …Run Code Online (Sandbox Code Playgroud) haskell ×4
javascript ×3
algorithm ×2
agda ×1
commit ×1
converter ×1
github ×1
imagemagick ×1
lisp ×1
memory ×1
node.js ×1
optimization ×1
pull-request ×1
qtscript ×1
racket ×1
resources ×1
scheme ×1
settimeout ×1
string ×1
timer ×1
type-systems ×1
type-theory ×1
types ×1
v8 ×1