小编arr*_*owd的帖子

如何取消定义MS-DOS变量?

假设我在CMD shell中执行以下命令:

set FOO=bar
Run Code Online (Sandbox Code Playgroud)

除了回收CMD shell之外,有没有办法取消定义这个变量?

windows cmd batch-file

80
推荐指数
4
解决办法
8万
查看次数

如何在matplotlib(python)中更改字体?

这听起来像一个简单的问题,但我没有找到任何有效的解决方案来改变python中使用matplotlib制作的图中的字体(而不是字体大小).

我发现了几个教程,通过修改matplotlib存储其默认字体的文件夹中的一些文件来更改matplotlib的默认字体 - 请参阅此博客文章 - 但我正在寻找一个不太激进的解决方案,因为我想使用多个我的情节中的字体(文字,标签,轴标签等).

python fonts matplotlib

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

Monad对申请人有什么好处?

我已经阅读了这篇文章,但最后一节并未理解.

作者说Monad给了我们上下文敏感性,但是只使用Applicative实例就可以实现相同的结果:

let maybeAge = (\futureYear birthYear -> if futureYear < birthYear
    then yearDiff birthYear futureYear
    else yearDiff futureYear birthYear) <$> (readMay futureYearString) <*> (readMay birthYearString)
Run Code Online (Sandbox Code Playgroud)

没有do语法肯定会更加丑陋,但除此之外我不明白为什么我们需要Monad.任何人都可以为我清除这个吗?

monads haskell functional-programming applicative

35
推荐指数
7
解决办法
3060
查看次数

#ifdef与CMake独立于平台的DEBUG

我正在使用CMake在Windows(Visual Studio)以及Linux机器(gcc)上构建我的项目.我想将一些代码标记为"仅调试",就像使用

#ifdef DEBUG
//some logging here
#endif
Run Code Online (Sandbox Code Playgroud)

问题是:CMake"Debug"构建类型中的所有平台上都有哪些编译器定义?DEBUG似乎不存在.(我希望只有在构建类型为Debug时才能进行日志记录或其他任何操作.)

c c++ cmake

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

什么是类别理论POV的应用Functor定义?

我能够通过以下方式将Functor的定义从类别理论映射到Haskell的定义:因为Hask类型的对象,仿函数F

  • 将每种类型a的地图映射Hask到新类型F a,粗略地说,在它之前加上"F".
  • 每射映射a -> bHask新态射F a -> F b使用fmap :: (a -> b) -> (f a -> f b).

到现在为止还挺好.现在我到了Applicative,在教科书中找不到任何提及这样的概念.通过查看它增加了Functor,ap :: f (a -> b) -> f a -> f b我试着拿出我自己的定义.

首先,我注意到,因为(->)它也是一种类型,态射Hask也是它的对象.鉴于此,我提出了一个建议,即应用仿函数是一个仿函数,它也可以将"箭头" - 源类别的对象映射到目标类型的态射.

这是正确的直觉吗?你能提供更正式和严谨的定义吗?

haskell category-theory applicative

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

用于LLVM项目的示例CMakeLists.txt文件

我很难让LLVM参与一个新项目.我已经尝试了http://old.nabble.com/CMake-sample-project--td28871124.html中的多个CMakeLists.txt示例并且花了很多时间.

我可以完美地构建LLVM和示例,但我想要一个不在LLVM文件夹中的项目.我在Windows 7上使用Visual Studio 2010.现在我的设置是这样的:

root
  - CMakeLists.txt (1)
  main
    - CMakeLists.txt (2)
    - main.cpp (an exact copy of the Fibonacci example)
Run Code Online (Sandbox Code Playgroud)

(1)

cmake_minimum_required(VERSION 2.6)
project (TestLLVM)

set(LLVM_SRC_DIR "MY FOLDER/llvm-2.9" CACHE PATH "Directory LLVM source (includes) are in")
set(LLVM_BIN_DIR "MY FOLDER/llvm-2.9-install" CACHE PATH "Directory LLVM binaries (libraries) are in")

set (CMAKE_BUILD_TYPE Debug)

add_definitions (-D_DEBUG)

link_directories(${LLVM_BIN_DIR}/lib/Release)
include_directories(${LLVM_SRC_DIR}/include ${LLVM_BIN_DIR}/include)

add_subdirectory (main)
Run Code Online (Sandbox Code Playgroud)

(2)

if(NOT WIN32 OR MSYS OR CYGWIN)
  set (PLATFORM_LIBS dl boost_system)
endif()

add_executable (main main.cpp)
target_link_libraries (main

    ${PLATFORM_LIBS}

    LLVMX86Disassembler …
Run Code Online (Sandbox Code Playgroud)

c++ cmake llvm

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

为什么cabal工具不使用Setup.lhs/Setup.hs?

我已经添加了putStrLn "Hello"一行到main我Setup.lhs的功能,并期待看到它运行时cabal configurecabal build.但是我没有.

然后我编译Setup.lhsghc --make就跑./Setup configure,并证明就行了.

如果它已经完成了意图,我看不到这背后的理由,甚至需要在Setup.lhs档案中.你能帮我清楚这些事吗?

build-process haskell cabal

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

如何在不使用副本的情况下更改QJson层次结构中的QJsonObject值?

我目前正在使用Qt5.0和核心QJson库来处理我正在开发的程序的一些数据.

要为此问题设置场景,我将为您提供一些说明我的问题的JSON数据:

{
    "CLOCKS": [
        {
            "ID": "clk",
            "MAX": 2e+08,
            "MIN": 1e+07,
            "VALUE": "no_clock"
        },
        {
            "ID": "memclk",
            "MAX": 2e+08,
            "MIN": 1e+07,
            "VALUE": "memclk"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这里我们有一个包含单个键'CLOCKS'的父QJsonObject.此键的值是QJsonObject的QJsonArray,它包含许多包含我的数据的键/值对.

如果我想检索id为'clk'的QJsonObject,我目前正在使用这样的代码:

// imagine m_data is my parent QJsonObject
QJsonArray clocks = m_data["CLOCKS"].toArray();
foreach (const QJsonValue & value, clocks) {
    QJsonObject obj = value.toObject();
    if (obj["ID"].toString() == "clk") {
        return obj;
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,图书馆到目前为止一直很好.但是,当我想要获取用于修改的QJsonObject 引用而不是副本时,我最近开始遇到问题.

所以我的问题是,给定样本数据提供了如何获取QJsonObject引用以修改所需时钟数据对象中的键/值对.问题表明,IMO由于你可以获得QJsonValueRefs,它是对值条目的引用...但实际访问其中的数据(如果值是另一个数组/对象),你必须使用toArray转换(),toObject()函数等.此函数仅返回副本而不是引用,从而创建一个障碍,以使用引用向下迭代对象层次结构.

到目前为止,我想出来的唯一方法就是创建整个"CLOCKS"QJsonArray的副本,找到我想要的对象,然后将其删除并重新插入更改的数据......最后分配整个数组返回父对象中的"CLOCKS"键.这对我来说似乎很麻烦,我觉得我做错了什么,必须有更好的方法.

这里支持这个是我的代码到目前为止的样子...只是改变其中一个时钟QJsonObjects的"VALUE":

  QJsonArray resets = m_data.value(TAG_RESETS).toArray();

  // get a copy of the QJsonObject
  QJsonObject obj;
  foreach …
Run Code Online (Sandbox Code Playgroud)

c++ qt json qt5 qjson

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

Yesod:在AJAX调用中使用类型安全URL

在我的Yesod项目中,我有以下路线:

/api/hide/thread/#Text/#Int      ApiHideThreadR   GET
Run Code Online (Sandbox Code Playgroud)

我想用javascript在客户端请求它:

function hideThreadCompletely(threadId, board) {
    $.getJSON("/api/hide/thread/"+board+"/"+threadId, function(data) {
        $('#thread-'+threadId).hide();
    });
}
Run Code Online (Sandbox Code Playgroud)

但我无法使用,@{ApiHideTHreadR}因为Yesod需要它在编译时的参数.什么是这种情况的妥善解决,如果我想API网址的样子api/board/1/1,而不是api/board?bid=1&tid=1?继续使用手动定义的URL "/api/hide/thread/"+board+"/"+threadId吗?

javascript ajax haskell yesod

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

我们为什么要在FRP中使用Behavior

我正在学习反应性香蕉.为了理解库,我决定实现一个虚拟应用程序,只要有人按下按钮就会增加计数器.

我使用的UI库是Gtk,但这与解释无关.

这是我提出的非常简单的实现:

import Graphics.UI.Gtk
import Reactive.Banana
import Reactive.Banana.Frameworks

makeNetworkDescription addEvent = do
    eClick <- fromAddHandler addEvent
    reactimate $ (putStrLn . show) <$> (accumE 0 ((+1) <$ eClick))

main :: IO ()
main = do
    (addHandler, fireEvent) <- newAddHandler
    initGUI
    network <- compile $ makeNetworkDescription addHandler
    actuate network
    window <- windowNew
    button <- buttonNew
    set window [ containerBorderWidth := 10, containerChild := button ]
    set button [ buttonLabel := "Add One" ]
    onClicked button $ fireEvent ()
    onDestroy window mainQuit …
Run Code Online (Sandbox Code Playgroud)

haskell reactive-programming reactive-banana

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