小编Dan*_*ter的帖子

在javascript中创建累积和数组

这是我需要做的一个例子:

var myarray = [5, 10, 3, 2];

var result1 = myarray[0];
var result2 = myarray[1] + myarray[0];
var result3 = myarray[2] + myarray[1] + myarray[0];
var result4 = myarray[3] + myarray[2] + myarray[1] + myarray[0];
Run Code Online (Sandbox Code Playgroud)

所有这些都会输出5,15,18,20

但不是像这样写出所有的变量,我想要它说:

var result = arrayitem + the sum of any previous items 
Run Code Online (Sandbox Code Playgroud)

那有意义吗?那可能吗?我怎么做?

javascript arrays

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

不要进入gnuplot终端

使用gnuplot模块,在绘制图形后,我将进入gnuplot控制台.有没有办法阻止这种情况发生?我从不使用它,并且exit在关闭每个图形之后必须键入是很烦人的,特别是在我测试一系列图形时.

例如:

module Main where
import Graphics.Gnuplot.Simple
main = do
    let xs = linearScale 100 (-10, 10) :: [Float]
    plotFunc [] xs sin
    plotFunc [] xs cos
Run Code Online (Sandbox Code Playgroud)

我正在使用Windows 7 x64和Haskell Platform 2013.2.0.0,如果这有所不同的话.

haskell gnuplot

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

通用函数何时不通用?

我正在使用scotty和处理Haskell服务器persistent.许多处理程序需要访问数据库连接池,所以我采取了以这种方式在整个应用程序中传递池:

main = do
    runNoLoggingT $ withSqlitePool ":memory:" 10 $ \pool ->
        liftIO $ scotty 7000 (app pool)

app pool = do
    get "/people" $ do
        people <- liftIO $ runSqlPool getPeople pool
        renderPeople people
    get "/foods" $ do
        food <- liftIO $ runSqlPool getFoods pool
        renderFoods food
Run Code Online (Sandbox Code Playgroud)

其中,getPeoplegetFoods适合persistent返回数据库操作[Person][Food]分别.

调用liftIOrunSqlPool在池上的模式在一段时间后变得令人厌倦 - 如果我可以将它们重构为单个函数(如Yesod的那样runDB,它只会接受查询并返回适当的类型),那不是很好.我写这样的东西的尝试是:

runDB' :: (MonadIO m) => ConnectionPool -> SqlPersistT …
Run Code Online (Sandbox Code Playgroud)

polymorphism haskell scotty

16
推荐指数
3
解决办法
950
查看次数

使用Haskell监视文件系统

我正在使用FSNotify包来监视我的文件系统以更改markdown文件,因此我可以自动通过Pandoc运行它们.但是,我很难让经理退出.

按照目前的情况,我的代码基于Yesod使用相同的包:

module Main where

import System.FSNotify
import Filesystem (getWorkingDirectory)
import System.Exit
import Control.Concurrent

main = do
    cwd <- getWorkingDirectory
    putStrLn "Watching current directory, press RETURN to exit."
    withManager $ \man -> do
        _ <- forkIO $ do
            watchTree man cwd (const True) $ \fp -> print fp
        _ <- getLine
        exitSuccess
Run Code Online (Sandbox Code Playgroud)

当我使用时runhaskell,程序运行完美,但如果我将其编译为可执行文件(使用ghc --make),当我按回车键时,我的终端变得没有响应.我正在Windows 7 64位上编译它.

编辑:完成的代码.好吧,还没有完全完成 - 还有更多我想做的事 - 但是工作.

filesystems haskell

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

从命令行指定无头或GUI

根据文档,在GUI模式下运行Vagrant VM很容易:

config.vm.provider "virtualbox" do |v|
  v.gui = true
end
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法从命令行执行此操作,例如在运行时vagrant up?例如,

vagrant up --gui
vagrant up --headless
Run Code Online (Sandbox Code Playgroud)

不同的用户可能更喜欢启动UI; 它似乎不应该在每个人都会使用的Vagrantfile中指定!

vagrant

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

确定最小切割的唯一性

免责声明:这一个家庭作业问题.截止日期已经过去,因此可以继续进行讨论,而无需担心这一点.

我正在努力解决的问题是确定图G =(V,E)中的特定最小st切是否是唯一的.这是很简单的找到一些最小切割用最大流算法,按照这个例子,但你会如何表现它最小割?

algorithm graph unique

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

句柄中的全局变量if blocks

可能在Handlebars条件中使用全局变量吗?我正在编写一个列出很多对象的应用程序,我希望用户能够控制列出的详细信息.例如,在人员列表中仅显示名字,如下所示:

<ul>
{{#each people}}
    <li>
        <p>{{firstName}}</p>
        {{#if displayLastnames}}
        <p>{{lastName}}</p>
        {{/if}}
    </li>
{{/each}}
</ul>
Run Code Online (Sandbox Code Playgroud)

我不想实际修改数据(例如,删除lastName属性并执行{{#if lastName}}).

handlebars.js

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

隐含Haskell模式匹配中的相等性

我正在编写一个函数来简化布尔表达式.例如,Nand(A, A) == Not(A).我试图使用模式匹配来实现这个特定的规则,如下所示:

-- Operands equivalent - simplify!
simplify (Nand q q) = Not (simplify q)
-- Operands must be different, so recurse.
simplify (Nand q q') = Nand (simplify q) (simplify q')
Run Code Online (Sandbox Code Playgroud)

编译后,我收到错误:

Conflicting definitions for `q'
Bound at: boolean.hs:73:21
          boolean:73:29
In an equation for `simplify'
Run Code Online (Sandbox Code Playgroud)

我想我明白发生了什么,我已经解决了,但我只是想知道:

  1. 为什么这种模式匹配不可能?
  2. 是否有惯用的解决方法?

完全披露:这与家庭作业有关,但课程的目的不是要学习Haskell,而是我已经以自己的方式解决了这个问题.

haskell boolean-logic pattern-matching

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

在Yampa模拟弹簧/阻尼系统

我正在尝试使用Yampa进行一些基本的系统仿真,就像我在Simulink中所做的那样.在这种情况下,我想模拟这个simulink教程介绍的弹簧和阻尼系统.我写了以下信号函数来代表系统:

system = time >>> force >>> displacement

force = constant (m * g)

displacement = feedback (-) (velocity >>> integral) (gain $ k / m) 0
velocity     = feedback (-) integral                (gain $ c / m) 0
Run Code Online (Sandbox Code Playgroud)

feedback函数创建一个基本的反馈回路,并像这样实现的:

feedback op a b b0 = loopPre b0 inner
    where inner = arr (uncurry op) >>> a >>> (identity &&& b)
Run Code Online (Sandbox Code Playgroud)

哦,并且:

gain x = arr (*x)
Run Code Online (Sandbox Code Playgroud)

有了明显的正常数,我得到了一个非常不稳定的系统:

位移/时间图

在我构建反馈循环或应用集成的方式中是否存在明显错误?

haskell physics frp yampa

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

使用最常用的类型类函数类型

我正在尝试在Haskell中编写一个简单的遗传算法.我认为第一步应该是为"遗传"个体制作一个类型类,如下所示:

class Genetic a where
    fitness :: (Ord b) => a -> b
Run Code Online (Sandbox Code Playgroud)

这似乎是合理的,我-我并不想限制的健身功能,以一种类似FloatDouble和概念上都适应度函数应该做的是提供个人的排序.

但是,当我为String包装器实现这个类型类时:

data DNA = DNA String
instance Genetic DNA where
    fitness (DNA s) = length s
Run Code Online (Sandbox Code Playgroud)

我在GHC中看到以下错误:

Could not deduce (b ~ Int)
from the context (Ord b)
  bound by the type signature for fitness :: Ord b => DNA -> b
Run Code Online (Sandbox Code Playgroud)

这不是我应该如何定义类型类函数?我是否必须将函数限制为特定的具体类型,或者为类型类构造函数提供另一个类型变量?

haskell

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