- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 F# 中,相等运算符 (=) 通常是外延的,而不是内涵的。那太棒了!不幸的是,在我看来,F# 没有使用指针相等来缩短这些扩展比较。
例如,这段代码:
类型 Z = MT | Z ref 的 NMT
//创建一个 Z:
让 a = ref MT
//让它指向自己:
a := NMT a
//检查它是否等于自身:
printf "a = a: %A\n"(a = a)
... 给了我一个很大的段错误 [*],尽管 'a' 和 'a' 都评估为相同的引用。那不是很好。其他函数式语言(例如 PLT Scheme)正确地使用指针比较,在可以使用指针比较确定时返回“true”。
所以:我会接受 F# 的相等运算符不使用捷径的事实;有什么方法可以执行内涵(基于指针的)相等性检查? (==) 运算符未在我的类型上定义,如果有人能告诉我它以某种方式可用,我会很高兴。
或者告诉我我对情况的分析是错误的:我也喜欢这样......
[*] 这可能是 Windows 上的堆栈溢出;有一些关于 Mono 的东西我不太喜欢......
最佳答案
我知道有两种选择。标准的 .NET 方法是使用 System.Object.ReferenceEquals
.在 F# 中稍微好一点的方法可能是使用 LanguagePrimitives.PhysicalEquality
这基本上是相同的,但仅适用于引用类型(这可能对您的目的是正确的)并且要求两个参数具有相同的静态类型。如果您想要更好的语法,您还可以根据这些函数中的任何一个定义您选择的自定义运算符。
顺便说一句,在 .NET 上,当我运行你的代码时,我得到了一个无限循环,但没有堆栈溢出,大概是由于尾调用优化。
关于f# - F# 中的快捷等式检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2686216/
我正在尝试建立一个模型,该模型将根据是否存在某些组件(在我的情况下为流体端口)具有略微不同的方程。 如下代码将不起作用: parameter Boolean use_component=false;
首先采用,kludge 解决方案,sentinel 方法(您的程序必须不允许输入 sentinel 值): select coalesce(a, -2147483648) = coalesce(b,
我有一个类型族,它确定某物是否位于类型级列表的开头。 type family AtHead x xs where AtHead x (x ': xs) = True AtHead y
我试图找出为什么在下面的方法中,数组“8”中的最后一个值会满足“(8 & 7) == 0”的 where 子句。 public class Test { public static voi
我是 C 语言的初学者。我正在使用在线示例代码并尝试分析以下内容, int x = 0, y = 16; *x_ptr = &x 这是我要确保我在语法上理解的第二行。我刚刚遇到指针的概念,并试图从概念
我想知道geom_density()到底在做什么,所以我证明了图的合理性,以及是否有任何方法可以提取为绘制的每条曲线生成的函数或点。 谢谢 最佳答案 键入get("compute_group", gg
我试图用 Haskell 实现一个 Braun 树,定义如下: {-# LANGUAGE GADTs #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE PolyK
==有什么区别和 === ? 松散到底是怎么做的==对比工作? 严格怎么做===对比工作? 什么是一些有用的例子? 最佳答案 ==之间的区别和 === 松散的区别==相等运算符和严格 ===相同的运算
==有什么区别和 === ? 松散到底是怎么做的==对比工作? 严格怎么做===对比工作? 什么是一些有用的例子? 最佳答案 ==之间的区别和 === 松散的区别==相等运算符和严格 ===相同的运算
在理解下面的代码中发生了什么时遇到问题。数组 c 和 d 的行为是我所期望的。但是 a 和 b 是怎么回事? (我也用普通的标量变量尝试过这个,在任何一种情况下都没有发生令人惊讶的事情。) 输出被复制
我正在尝试使用 Java Swing 为数学方程式创建一个 GUI 5((θ/β) - cos(2πθ/β)) . 最初我开始使用一个简单的余弦函数并创建了 GUI,它工作正常。这是我的余弦函数程序:
我正在尝试将这条曲线作为我目前正在开发的一款小游戏的升级系统的一部分。方程如下 f(x) = -e^-((-log(7)/100)*(100-x))+7 在python中可以定义为 f=lambda
我是一名优秀的程序员,十分优秀!