这是我需要做的一个例子:
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)
那有意义吗?那可能吗?我怎么做?
使用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,如果这有所不同的话.
我正在使用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)
其中,getPeople和getFoods适合persistent返回数据库操作[Person]和[Food]分别.
调用liftIO和runSqlPool在池上的模式在一段时间后变得令人厌倦 - 如果我可以将它们重构为单个函数(如Yesod的那样runDB,它只会接受查询并返回适当的类型),那不是很好.我写这样的东西的尝试是:
runDB' :: (MonadIO m) => ConnectionPool -> SqlPersistT …Run Code Online (Sandbox Code Playgroud) 我正在使用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位上编译它.
编辑:完成的代码.好吧,还没有完全完成 - 还有更多我想做的事 - 但是工作.
根据文档,在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中指定!
免责声明:这是一个家庭作业问题.截止日期已经过去,因此可以继续进行讨论,而无需担心这一点.
我正在努力解决的问题是确定图G =(V,E)中的特定最小st切是否是唯一的.这是很简单的找到一些最小切割用最大流算法,按照这个例子,但你会如何表现它的最小割?
可能在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}}).
我正在编写一个函数来简化布尔表达式.例如,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)
我想我明白发生了什么,我已经解决了,但我只是想知道:
完全披露:这与家庭作业有关,但课程的目的不是要学习Haskell,而是我已经以自己的方式解决了这个问题.
我正在尝试使用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中编写一个简单的遗传算法.我认为第一步应该是为"遗传"个体制作一个类型类,如下所示:
class Genetic a where
fitness :: (Ord b) => a -> b
Run Code Online (Sandbox Code Playgroud)
这似乎是合理的,我-我并不想限制的健身功能,以一种类似Float或Double和概念上都适应度函数应该做的是提供个人的排序.
但是,当我为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 ×6
algorithm ×1
arrays ×1
filesystems ×1
frp ×1
gnuplot ×1
graph ×1
javascript ×1
physics ×1
polymorphism ×1
scotty ×1
unique ×1
vagrant ×1
yampa ×1