小编齐天大*_*天大圣的帖子

如何测试两个函数是否相同?

我发现了一个代码段某处在线:

(letrec
  ([id (lambda (v) v)]
   [ctx0 (lambda (v) `(k ,v))]
         .....
         .....
         (if (memq ctx (list ctx0 id)) <---- condition always return false
         .....
Run Code Online (Sandbox Code Playgroud)

其中ctx也是一个函数:

但是我永远不会让test语句返回true.

然后我有以下测试:

(define ctx0 (lambda (v) `(k ,v)))
(define ctx1 (lambda (v) `(k ,v)))
(eq? ctx0 ctx1)
=> #f
(eqv? ctx0 ctx1)
=> #f
(equal? ctx0 ctx1)
=> #f
Run Code Online (Sandbox Code Playgroud)

这让我怀疑两个函数总是不同,因为它们有不同的内存位置.

但是如果可以将函数与其他函数进行比较,我该如何测试两个函数是否相同?如果他们有不同的变量名怎么办?例如:

(lambda (x) (+ x 1))(lambda (y) (+ y 1))

PS我使用DrRacket来测试代码.

scheme functional-programming racket

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

OCaml:如何测试我自己的正则表达式库

我创建了一个简单的正则表达式引擎,它支持连接,交替,闭包和char a .. z.

我代表nfa和dfa的方式是使用记录:

type state       = int with sexp, compare
type alphabet    = char with sexp, compare
type transaction = state * alphabet option * state with sexp, compare
type d_transaction = state * alphabet * state with sexp, compare

type state_set = State_set.t
type states_set = States_set.t

type nfa = {
  states       : State_set.t ;
  alphabets    : Alphabet_set.t ;
  transactions : Transaction_set.t; 
  start_state  : state;
  final_states : State_set.t;
}


type dfa = {
  d_states       : State_set.t …
Run Code Online (Sandbox Code Playgroud)

regex testing ocaml unit-testing

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

Vue:不同页面之间共享数据

var app = new Vue({
    el: '#app',
    data: {
        sharedData : ""
    },

    methods: {
        goToPageB: function() {
             if (some condition is met) {
                window.location.href="pageB.html";
                sharedData = 1234;  <------- I want to access sharedData in page B as well
             } 

        } 
    }
Run Code Online (Sandbox Code Playgroud)

我是 Vue 的新手,我做了一个虚拟登录页面,并尝试让我的主页根据用户名显示 sharedData。但是在我的应用程序定向到页面 B 后数据总是丢失。我该如何解决这个问题?

vue.js

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

OS X - x64:堆栈不是 16 字节对齐错误

我知道 OS X 是 16 字节堆栈对齐,但我真的不明白为什么它会在这里导致错误。

我在这里所做的只是将一个对象大小(即 24)传递给 %rdi,然后调用 malloc。这个错误是否意味着我必须要求 32 个字节?

错误信息是:

libdyld.dylib`stack_not_16_byte_aligned_error: -> 0x7fffc12da2fa <+0>: movdqa %xmm0, (%rsp) 0x7fffc12da2ff <+5>: int3

libdyld.dylib`_dyld_func_lookup: 0x7fffc12da300 <+0>: pushq %rbp 0x7fffc12da301 <+1>: movq %rsp, %rbp

这是代码:

Object_copy:
    pushq %rbp
    movq %rbp, %rsp

    subq $8, %rsp
    movq %rdi, 8(%rsp)          # save self address
    movq obj_size(%rdi), %rax   # get object size
    imul $8, %rax          
    movq %rax, %rdi 
    callq _malloc             <------------------- error in this call

    # rsi old object address
    # rax new object address …
Run Code Online (Sandbox Code Playgroud)

macos assembly x86-64

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

bash脚本:如何在不同的行显示输出

我正在尝试使用一行代码来解决问题

echo $(find . -maxdepth 1 -type f -newer $1  | sed 's,\.\/,,g')
Run Code Online (Sandbox Code Playgroud)

这将打印出当前文件夹中比输入文件更新的所有文件.但它打印在一行中:

file1 file2 file3 file4....
Run Code Online (Sandbox Code Playgroud)

如何在一行中显示每个文件名,如:

file1
file2
file3
...
Run Code Online (Sandbox Code Playgroud)

这似乎很简单,但我一直在寻找,没有解决方案.先感谢您.

bash shell

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

C中的sizeof(数组):分段错误

嗨,我从这段代码得到一个奇怪的分段错误:

int main(void){

  int array1[10000000];

  int n = sizeof(array1);

  printf("%d \n", n );

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我改变

int array1[10000000];
Run Code Online (Sandbox Code Playgroud)

int array1[1000000];  ( one less zero)
Run Code Online (Sandbox Code Playgroud)

该程序工作和打印4000000

我在Fedora 21(64位)上运行它

这是因为C中的数组有最大大小吗?先感谢您

c arrays

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

C: struct 类型定义不完整

这个错误似乎很容易修复,但我一直在尝试,但一无所知。

所以我有三个文件:

symtable.h:

typedef struct symbolTable *SymTable_T;
Run Code Online (Sandbox Code Playgroud)

symtablelist.c:

#include "symtable.h"

struct Node{
    char* key;
    void* value;
    struct Node* next;
};

struct symbolTable{
    struct Node* head;
    int length;
};

SymTable_T SymTable_new(void){

/* code */

}
Run Code Online (Sandbox Code Playgroud)

和 main.c:

#include "symtable.h"

int main(int argc, const char * argv[]) {
    // insert code here...
    SymTable_T emptyTable = SymTable_new();

    emptyTable->length = 3;   <------- ERROR

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:“struct symbolTable”类型的定义不完整

任何人都可以给我一个提示吗?

我在我的源文件中声明我的结构的原因是我将有另一个头文件的实现。那么除了移动我的结构声明之外还有另一种方法来修复我的错误吗?

c struct

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

OCaml:设计文本冒险游戏的数据类型

我正在尝试制作一个简单的天真文本冒险游戏(基本一页)来学习OCaml.

游戏是关于制作游戏引擎,所以关于房间,项目等的所有信息都存储在json文件中.

示例json文件将如下所示:

{
  "rooms":
  [
    {
      "id": "room1",
      "description": "This is Room 1.  There is an exit to the north.\nYou should drop the white hat here.",
      "items": ["black hat"],
      "points": 10,
      "exits": [
        {
          "direction": "north",
          "room": "room2"
        }
      ],
      "treasure": ["white hat"]
    },
    {
      "id": "room2",
      "description": "This is Room 2.  There is an exit to the south.\nYou should drop the black hat here.",
      "items": [],
      "points": 10,
      "exits": [
        {
          "direction": "south",
          "room": "room1"
        } …
Run Code Online (Sandbox Code Playgroud)

ocaml adventure game-engine data-structures

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

“调度”未定义

我一直在调试这个程序,但没有任何线索,我一个字一个字地按照教程尝试制作一个 TODO 应用程序,但我不明白为什么我会收到这个错误消息。

./src/containers.js
第 12 行:'dispatch' 未定义 no-undef
第 13 行:'dispatch' 未定义 no-undef

组件.js

import React from 'react'

class Todo extends React.Component {

    render() {
        const { todo } = this.props

        if (todo.isDone) {
            return <strike>{todo.text}</strike>
        } else {
            return <span>{todo.text}</span>
        }
    }
}

export default class TodoList extends React.Component {
    render() {

        const {todos, toggleTodo, addTodo } = this.props
        console.log(toggleTodo)

        return (
            <div className="todo">
                <input type="text" placeholder="Add todo"/>
                <ul className='todo__list'>
                    {todos.map(t => (
                    <li key={t.id} className='todo__item'> …
Run Code Online (Sandbox Code Playgroud)

reactjs redux

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

链表C++中的赋值运算符

我正在尝试在 C++ 中实现链表。

我像这样实现我的赋值运算符:

// assignment operator
template<class T>
LinkedList<T>& LinkedList<T>::operator = (const LinkedList& rhs) {

if (&rhs != this) {
    Node *tmp = head;

    while (tmp -> next) {
        head = head -> next;
        delete tmp;
        tmp = head;
    }

    tmp = rhs -> head;

    while (tmp) {
        append(tmp);
        tmp = tmp -> next;
    }
}

    return *this;
}
Run Code Online (Sandbox Code Playgroud)

在我的主函数中,我使用以下代码进行测试:

LinkedList<int> *lst1 = new LinkedList<int>(7);

LinkedList<int> *lst2 = new LinkedList<int>(101);

std::cout << lst1 -> head -> data << std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ constructor

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