小编Lab*_*kak的帖子

Haskell 中的身份函数有多个居民吗?

在范畴论中可以证明恒等函数是唯一的。也有人说,用参数推理,该类型forall a. a -> a只有一个居民。在 Haskell 中,虽然我可以想到更多的身份函数实现:

id x = x
id x = fst (x, "useless")
id x = head [x]
id x = (\x -> x) x
id x = (\x -> (\x -> x) x) x
Run Code Online (Sandbox Code Playgroud)

forall a. a -> a当有多个实现时,如何理解“标识函数是唯一的”和“任何具有类型的函数只有一个居民”这句话?

haskell category-theory

12
推荐指数
2
解决办法
173
查看次数

使用Web Audio API与OscillatorNodes弹奏和弦

我想使用OscillatorNodes来演奏和​​弦:

var ac = new (window.AudioContext || window.webkitAudioContext);
// C4, E4, G4
var freqs = [261.63, 329.63, 392.00];
for(var i=0;i<freqs.length;i++) {
  var o = ac.createOscillator();
  o.frequency.value = freqs[i];
  o.connect(ac.destination);
  o.noteOn(0);
  setTimeout(function() {o.noteOff(0)}, 1000);
}
Run Code Online (Sandbox Code Playgroud)

但这种方法听起来像一团糟(这听起来像是这样).如果我尝试为和弦中的每个音符创建新的AudioContexts,那么听起来不错(就像这样):

// C4, E4, G4
var freqs = [261.63, 329.63, 392.00];
for(var i=0;i<freqs.length;i++) {
  var ac = new (window.AudioContext || window.webkitAudioContext);
  var o = ac.createOscillator();
  o.frequency.value = freqs[i];
  o.connect(ac.destination);
  o.noteOn(0);
  setTimeout(function() {o.noteOff(0)}, 1000);
}
Run Code Online (Sandbox Code Playgroud)

但我读到你只应该有一个AudioContext.我究竟做错了什么?

javascript api web-audio-api

5
推荐指数
1
解决办法
2750
查看次数

在依赖类型的编程语言中,Type-in​​-Type 是否适用于编程?

在具有依赖类型的语言中,您可以使用 Type-in​​-Type 来简化语言并赋予它很多功能。这使得语言在逻辑上不一致,但如果您只对编程感兴趣而不对定理证明感兴趣,这可能不是问题。

Cayenne论文(一种用于编程的依赖类型语言)中提到了 Type-in​​-Type,“未分层的类型系统将使在类型检查期间无法确定表达式对应于类型还是实值,并且不可能在运行时删除类型”(第 2.4 节)。

我对此有两个问题:

  • 在某些依赖类型的语言(如 Agda)中,您可以明确说明应该删除哪些变量。在那种情况下,Type-in​​-Type 还会引起问题吗?
  • 我们可以使用KindwhereType : Kind和将层次结构扩展一个额外的步骤Kind : Kind。这仍然不一致,但现在您似乎可以知道术语是类型还是值。这样对吗?

type-theory dependent-type

5
推荐指数
1
解决办法
241
查看次数

J,创建一个函数

我刚开始学习J,我试图创建一个函数来检查数字是否为素数.

<./<./13|*/~(2}.i.)13
Run Code Online (Sandbox Code Playgroud)

这将检查13是否为素数并返回1.

<./<./10|*/~(2}.i.)10
Run Code Online (Sandbox Code Playgroud)

这将返回0.

所以我的问题是:我如何制作一个功能呢?我如何指定参数?

prime(x) =: <./<./x|*/~(2}.i.)x
Run Code Online (Sandbox Code Playgroud)

这当然是行不通的.但是如何在J中创建此功能?

PS.我知道这个功能对2不起作用,我稍后再处理:D

primes numbers function j

3
推荐指数
1
解决办法
197
查看次数

J,不可动摇的动词

1 0 0 1 verb 1 2 3 4
  result:1 4
Run Code Online (Sandbox Code Playgroud)

动词从右侧列表中删除左侧列表中为0的项目.我记得在词汇表中看到这个动词但我再也找不到了.有人知道这个动词吗?

boolean function list j

3
推荐指数
1
解决办法
147
查看次数

每个类型构造函数(`Type -&gt; Type`)都是某种函子

众所周知,带有 kind 的类型构造函数Type -> Type(在系统 F-omega 中)仅Functor当它实现了 function 时才是 a (a -> b) -> f a -> f b。虽然这是一个无法无天的函子,但它也应该遵守函子法则(保留组成和同一性)。因此类型构造函数Type -> Type并不总是函子。但这仅涉及类型范畴中的协变内函子。还有逆变函子和更多种类的函子。

我的问题:任何类型构造函数/函数是否具有Type -> Type某种(类别理论)合法函子(协变、逆变或其他类型)?

haskell category-theory

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