小编Ben*_*ach的帖子

在递归例程中是否存在"堆栈级太深"错误的解决方法?

Ruby中的递归函数中是否存在Stack Overflow错误的解决方法?

比方说,我有这个块:

def countUpTo(current, final)
    puts current
    return nil if current == final
    countUpTo(current+1, final)
end
Run Code Online (Sandbox Code Playgroud)

如果我打电话countUpTo(1, 10000),我会收到一个错误:stack level too deep (SystemStackError).

它似乎在8187处突破.是否有一些函数我可以调用告诉Ruby忽略堆栈的大小,或者增加最大堆栈大小的方法?

ruby stack-overflow recursion tail-call-optimization

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

如何在Ruby on Rails中将数组持久化到数据库?

我试图在Rails中将一个数组数组保存到我的SQLite数据库中.

现在,我有一个可以容纳这样一个数组的对象,实例看起来没有任何问题.但是,它显然没有被持久化到数据库中 - 当我在My_Object.array上调用不同于创建数组的视图中的函数时,它出现了nil并且不起作用.

例如:

class My_Object < ActiveRecord::Base
  attr_accessor :array
end
Run Code Online (Sandbox Code Playgroud)

当我打电话时My_Object.new(:array => [ [1, 2, 3], [4, 5, 6] ]),一切似乎都能正常工作,但我无法:array在其他地方访问该物业,它只是零.

有任何想法吗?

ruby database arrays ruby-on-rails

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

在Haskell中播放声音样本的最简单方法是什么?

我正在努力构建一个基本的音乐创作系统.我可以在记忆中表现音乐,但我(显然)希望能够输出实际的声音!我真的不在乎格式是什么(MIDI,mp3,ogg等等).我只是希望能够将样本加载到程序中并以最简单的方式播放它们.我一直在寻找解决方案,但我所看到的一切都是a)太复杂(开销方面)满足我的需求,b)没有得到积极支持,或c)没有充分记录.我希望看到一个声音输出或其他方面的例子,这是最简单的方法.

audio haskell

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

这个备忘录是否正常工作?

我现在一直在Haskell 工作解决Project Euler#14一段时间了,但出于某种原因,我无法让它工作.我刚才使用Groovy解决了这个问题,我想我在这里使用的方法基本相同.然而,即使只找到前10,000个长度,程序运行速度也非常慢,而我现在真的迷失了原因.我认为我正在使用memoization,但即使GHCI中的数据集很少,我也会耗尽内存.

这是我到目前为止所提出的.

collatz = (map collatz' [0..] !!)
    where collatz' n
        | n == 1 = 1
        | n `mod` 2 == 0 = 1 + collatz (n `div` 2)
        | otherwise = 1 +  collatz (3 * n + 1)
Run Code Online (Sandbox Code Playgroud)

我正在运行map collatz [1..1000000]以获得问题的答案,但是map collatz [1..10000]给了我一个内存不足的错误,并且还需要几秒钟才能完成运行.

如果有人能给我一些关于这个程序的问题的见解,那就太好了!我尝试了很多东西,我只是陷入困境,需要一只手.

谢谢!

haskell memoization collatz

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

Google Maps事件侦听器在Javascript'for'循环中无法正常工作

我正在尝试设置一个Google地图实例,其中为一组点动态生成一些内容.

现在,我正在使用for循环遍历任意数量的纬度和经度值,并创建标记是地图上的那些点.

我正在尝试添加与这些标记相对应的信息窗口,并在单击标记时弹出它们.

但是,我遇到了一些麻烦.除了eventListener部分之外,它看起来像我的for循环基本上创建了一切正常工作:

function drawMap(points) {
    popUps = new Array();
    infoWindows = new Array();
    positions = new Array();

    contents = '<div id = "content">' +
        '<div id="siteNotice">' +
        '</div>' +
        '<p id="firstHeading" class="firstHeading">Position</h1>' +
        '</div>';

    infowindow = new google.maps.InfoWindow({
        content: contents
    });

    for( i = 0; i < points.length; i++ ){
        positions[i] = new google.maps.Marker({ position: 
        latlng[i], 
        map:map, 
        title:"Position"});

        popUps[i] = '<div id = "content">' +
            '<div id="siteNotice">' +
            '</div>' +
            '<p id="firstHeading" class="firstHeading">Position</h1>' +
            '</div>';

        infoWindows[i] = new …
Run Code Online (Sandbox Code Playgroud)

javascript maps events

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

有没有一种简单的方法可以将导入Enum的数据类型转换为列表?

我有一段代码看起来像这样:

data SomeData = A | B | C | D | E deriving (Show, Enum)
Run Code Online (Sandbox Code Playgroud)

我希望能够轻松地将某些值映射到这些类型.说我想要char映射到一个SomeData类型,我可能这样做:

mappings = zip "abcde" [A, B, C, D, E]
Run Code Online (Sandbox Code Playgroud)

这会产生[('a',A),('b',B)...]等等.我希望Enum类型类可以让我能够[A, B, C, D, E]通过使用一些便利函数将数据类型转换为上面描述的列表()来轻松地做到这一点.

标准库中有这样的功能吗?或者我是否需要自己定义它,如果我想使用这样的东西?

enums haskell algebraic-data-types

3
推荐指数
2
解决办法
193
查看次数

如何声明一个函数将函数作为参数?

对不起,这个冗长且令人困惑的标题!这是我的问题:我正在尝试编写一个函数来输出另一个函数所需的时间.通常我只是传递函数及其参数,但在这个例子中,我试图计时的函数将函数作为参数.

举一个具体的例子,我试图让它工作:

void foo(void (*f) (T*)){
  ...function stuff...
}

                  --------not sure what this should be
                 | 
void runWithTime(void (*f) (void (*g) (T*))){
  f(g)
}

//runWithTime(foo);
Run Code Online (Sandbox Code Playgroud)

我希望能够打电话runWithTime(foo),但我不确定该类型runWithTime的论点应该是什么.

任何帮助都会很棒!提前致谢.

c++ time function-pointers

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

缓存已知"答案"的功能替代方案

我认为形成这个问题的最好方法是用一个例子......所以,我决定询问这个问题的实际原因是因为Euler项目问题55.在这个问题中,它要求找到低于10,000的Lychrel数.在命令式语言中,我会得到导致最终回文的数字列表,并将这些数字推送到我的函数之外的列表中.然后,我会检查每个传入的号码,看它是否是该列表的一部分,如果是,只需停止测试并得出结论,该号码不是Lychrel号码.我会用非lychrel数字及其前面的数字做同样的事情.

我之前已经做过这件事并且很好地完成了.然而,实际上在Haskell中实现这一点似乎是一个很大的麻烦,而不是在我的函数中添加一堆额外的参数来保存前驱,而绝对的父函数来保存我需要存储的所有数字.

我只是想知道是否有一些我在这里缺少的工具,或者是否有任何标准作为这样做的方法?我已经读过Haskell有点"自然缓存"(例如,如果我想将奇数定义为odds = filter odd [1..],我可以随时引用它,但是当我需要动态添加元素时,它似乎变得复杂了名单.

有关如何解决这个问题的任何建议?

谢谢.

PS:我不是要求回答Project Euler问题,我只想更好地了解Haskell!

caching haskell

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

如何检查Haskell中的数据类型?

我正在尝试在Haskell中编写一个brainfuck解释器作为一个练习/有趣的项目,我遇到了一个小问题.

Brainfuck的"while循环"结构只是括在括号内的一系列命令.我正在尝试以一种方式构建语法树,我将操作符存储在[数据构造函数内部的循环中.

这就是命令和语法"树"的数据声明当前的样子:

data Operator = Plus
                | Minus
                | RShift 
                | LShift
                | Dot
                | Comma
                | SBracket [Operator]
                | EBracket
                deriving (Show, Eq)


type STree = [Operator] 
Run Code Online (Sandbox Code Playgroud)

我正在尝试做的是采取一些String命令,"+><[.>]"并将其解析为STree如下所示:

[Plus, RShift, LShift, SBracket [Dot, RShift], EBracket]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只能得到一个一维列表String,因为我不知道如何检查列表的头是否是SBracket为了将新的运算符放在它的运算符列表而不是主要清单的负责人.

这是我用来解析的函数:

matchChar :: Char -> Maybe Operator
matchChar c = case c of 
                '+' -> Just Plus
                '-' -> Just Minus
                '>' -> Just RShift  
                '<' -> Just LShift
                '.' …
Run Code Online (Sandbox Code Playgroud)

interpreter haskell types

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

不匹配operator == error,C++

这真让我烦恼.我正在使用C++重载比较运算符,我得到一个奇怪的错误,我不知道如何纠正.

我正在使用的代码如下所示:

bool HugeInt::operator==(const HugeInt& h) const{
    return h.integer == this->integer;
}

bool HugeInt::operator!=(const HugeInt& h) const{
    return !(this == h);
}
Run Code Online (Sandbox Code Playgroud)

这里integer是一个short [30]

==超载工作正常.但是当我尝试在!=身体中使用它时,它告诉我==尚未定义.我是C++的新手,所以欢迎任何提示.

谢谢!

c++ operator-overloading

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

将函数式编程原则应用于 Javascript 是一个非常可行的选择吗?

我来自 Haskell 的背景。我非常习惯于使用递归函数和典型的高阶函数(折叠、映射、过滤器等)和组合函数来完成任务。我现在正在 node.js 中进行开发,我非常想编写自己的模块来实现这些功能,这样我就可以以一种对我有意义的方式在我的代码中使用它们。

我的问题基本上是:Javascript 是否可以处理这种类型的负担?我知道前面提到的递归函数可以很容易地重构为迭代函数,但是很多时候我发现自己在函数内调用了很多函数,我不知道Javascript是否可以很好地处理这种类型的事情。我知道像 Underscore 这样的东西存在并实现了一些 FP 原则,但我的问题基本上归结为:在 Javascript 中进行函数式编程是一种好习惯吗?如果没有,为什么不呢?

如果这个问题对 SO 来说有点太软,我也很抱歉,但是如果一旦它变得太大就会破坏一切,我不想开始整理我自己的工具集。

javascript functional-programming

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

是否无法创建此数据类型的Functor实例?

我正在尝试将此数据类型设为以下实例Functor:

data Fraction = Frac Integer Integer deriving Show
Run Code Online (Sandbox Code Playgroud)

但是,像这样定义它将不起作用:

instance Functor Fraction where
  pure = Frac 1 1
  fmap f (Frac a b) = Frac (f a) (f b)
Run Code Online (Sandbox Code Playgroud)

想要这个功能,我希望数据是Functor的一个实例.但是,这是否违反了一些法律,因为参数Fraction总是两个Integers

我总是可以fmap自己写一下并避免Functor声明,但我正试图更熟悉这种语言,所以任何帮助都会受到赞赏!

haskell types functor fractions

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

如何从ColdFusion feed获取特定字段的单个元素?

我不是Coldfusion的专家(坦率地说,我对此几乎一无所知),但我的任务是设置一个Atom提要,以显示在我们客户的一个网页上.

我已经设法正确连接所有内容,并且能够在外部网站上显示Feed.我仍然有一个问题 - 我需要一个链接到帖子,并且feed在该字段下显示了一系列由逗号分隔的相同内容的不同链接.

我只需抓住第一个就可以嵌入它.如果没有我只是解析字符串的天真方法(我也不知道如何在CF中做),有没有一种简单的方法可以做到这一点?

这是我现在用于生成内容的代码,该linkhref字段是我需要获取的第一个成员:

<cfset feedurl="http://*******.blogspot.com/atom.xml" />
<cffeed source="#feedurl#" properties="feedmeta" query="feeditems" />

<ul>
    <cfoutput query="feeditems">
    <li>#title#</li>
        <li>#linkhref#</li>
        <li>#content#</li>
    </cfoutput>
</ul>
Run Code Online (Sandbox Code Playgroud)

我得到的回报是这样的:http://*****.blogspot.com/2012/09/****.html,http://****.blogspot.com/feeds/****/comments/default,http://****.blogspot.com/2012/09/****等等.

任何帮助将不胜感激!谢谢!

xml coldfusion feed atom-feed

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