小编chr*_*ris的帖子

C#反射,改变方法的主体

是否可以在运行时更改方法体?

class Person
{
    public void DoSth()
    { Console.WriteLine("Hello!"); }
}
Run Code Online (Sandbox Code Playgroud)

我想有一个简单的输入字段(如文本框),我可以在运行时编写方法体源代码.

文本框可能包含以下数据:

for (int i = 0; i < 5; i++)
     Console.WriteLine(i);
Run Code Online (Sandbox Code Playgroud)

应该在什么时候进行

new Person().DoSth()
Run Code Online (Sandbox Code Playgroud)

叫做.

在C#(使用Reflection)中是否可以(或如何)?
感谢您的帮助.

编辑:
如果上述情况不可能,是否可以在运行时创建一个新方法并调用它?

c# code-generation

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

共享在函数式编程语言的实现中引用了什么

共享意味着如果临时数据将被多次使用,则将其存储.也就是说,函数只评估它的参数一次.一个例子是:

let x = sin x in x * x
Run Code Online (Sandbox Code Playgroud)

还有哪些其他功能有助于共享,以及它们如何与实际执行IO的需求相互作用?

haskell functional-programming sharing

5
推荐指数
2
解决办法
228
查看次数

如何在Isabelle/jEdit中启用"跟踪"

我是vim粉丝,但只有emacs才有这个Isabelle/HOL环境.jEdit很棒,但我不能使用

using [[simp_trace=true]]
Run Code Online (Sandbox Code Playgroud)

就像在emacs中一样.

如何在jEdit中启用"跟踪" ?

isabelle

5
推荐指数
2
解决办法
1500
查看次数

什么是归纳谓词?

你如何解释归纳谓词?它们是做什么用的?他们背后的理论是什么?它们仅存在于依赖类型系统中,还是也存在于其他系统中?它们在某种程度上与 GADT 相关吗?为什么它们在 Coq 中默认为 true?

这是 Coq 的一个例子:

Inductive even : nat -> Prop :=
| even0 : even 0
| evens : forall p:nat, even p -> even (S (S P))
Run Code Online (Sandbox Code Playgroud)

你会如何使用这个定义?它是数据类型还是命题?

predicate coq induction

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

Cons的优点是什么?

许多函数式编程语言都支持并推荐数据构造函数Cons(对于像HaskellScala(1, (2, (3)))这样的列表.

但它的优点是什么?这些列表既不能随机访问,也不能附加到其中O(1).

functional-programming data-structures

4
推荐指数
1
解决办法
233
查看次数

在命令替换中使用变量

我需要一些关于以下简单bash脚本的帮助,其中变量i在运行时似乎没有被替换curl(导致错误).

(这只是对实际脚本的简单抽象)

for i in {1..3}
do
  HTML=$(curl -s 'http://example.com/index.php?id=$i')
done;
Run Code Online (Sandbox Code Playgroud)

bash

4
推荐指数
1
解决办法
4288
查看次数

在Isabelle中证明A ==> B ==> C ==> B.

我很困惑证明

A ==> B ==> C ==> B 
Run Code Online (Sandbox Code Playgroud)

在伊莎贝尔.显然你可以

apply simp
Run Code Online (Sandbox Code Playgroud)

但我怎么能用规则证明这一点呢?

或者,有没有办法转储使用的规则simp?谢谢.

isabelle

4
推荐指数
1
解决办法
242
查看次数

isabelle证明了交换性

我试图证明Isabelle/HOL的交换性是一种自定义的add功能.我设法证明了相关性,但我坚持这个.

定义add:

fun add :: "nat ? nat ? nat" where
"add 0 n = n" |
"add (Suc m) n = Suc(add m n)"
Run Code Online (Sandbox Code Playgroud)

相关性证明:

lemma add_Associative: "add(add k m) z = add k (add m z)"
apply(induction k)
apply(auto)
done
Run Code Online (Sandbox Code Playgroud)

交换的证明:

theorem add_commutativity: "add k m = add m k"
apply(induction k)
apply(induction m)
apply(auto)
Run Code Online (Sandbox Code Playgroud)

我有以下目标:

goal (3 subgoals):
1. add 0 0 = add 0 0
2. ?m. add 0 m = add …
Run Code Online (Sandbox Code Playgroud)

logic proof commutativity isabelle

4
推荐指数
1
解决办法
760
查看次数

驯服 Isar 证明中的元蕴涵

证明一个简单的定理 我在证明中遇到了元级别的含义。可以拥有它们还是可以避免它们?如果我应该处理它们,这是正确的方法吗?

theory Sandbox
imports Main
begin

lemma "(x::nat) > 0 ? x = 0"
proof (cases x)
  assume "x = 0"
  show "0 < x ? x = 0" by (auto)
next
  have "x = Suc n ? 0 < x" by (simp only: Nat.zero_less_Suc)
  then have "x = Suc n ? 0 < x ? x = 0" by (auto)
  then show "?nat. x = Suc nat ? 0 < x ? x = 0" by (auto)
qed …
Run Code Online (Sandbox Code Playgroud)

isabelle isar

4
推荐指数
1
解决办法
280
查看次数

高阶函数不会解析任何参数

为什么这是非法的:

def foobar() = {}

val option: Option[() => Unit] = Some(foobar)
Run Code Online (Sandbox Code Playgroud)

虽然这是合法的:

def foobar() = {}

val intermediate: () => Unit = foobar

val option: Option[() => Unit] = Some(intermediate)
Run Code Online (Sandbox Code Playgroud)

在第一个示例中,编译器抱怨赋值的右侧是类型Option[Unit]而不是Option[() => Unit].

我怀疑这foobar有待评估而不是作为变量传递Some(),但我不确定.

functional-programming scala higher-order-functions

4
推荐指数
1
解决办法
91
查看次数