假设我在CMD shell中执行以下命令:
set FOO=bar
Run Code Online (Sandbox Code Playgroud)
除了回收CMD shell之外,有没有办法取消定义这个变量?
这听起来像一个简单的问题,但我没有找到任何有效的解决方案来改变python中使用matplotlib制作的图中的字体(而不是字体大小).
我发现了几个教程,通过修改matplotlib存储其默认字体的文件夹中的一些文件来更改matplotlib的默认字体 - 请参阅此博客文章 - 但我正在寻找一个不太激进的解决方案,因为我想使用多个我的情节中的字体(文字,标签,轴标签等).
我已经阅读了这篇文章,但最后一节并未理解.
作者说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.任何人都可以为我清除这个吗?
我正在使用CMake在Windows(Visual Studio)以及Linux机器(gcc)上构建我的项目.我想将一些代码标记为"仅调试",就像使用
#ifdef DEBUG
//some logging here
#endif
Run Code Online (Sandbox Code Playgroud)
问题是:CMake"Debug"构建类型中的所有平台上都有哪些编译器定义?DEBUG似乎不存在.(我希望只有在构建类型为Debug时才能进行日志记录或其他任何操作.)
我能够通过以下方式将Functor的定义从类别理论映射到Haskell的定义:因为Hask类型的对象,仿函数F
a的地图映射Hask到新类型F a,粗略地说,在它之前加上"F".a -> b的Hask新态射F a -> F b使用fmap :: (a -> b) -> (f a -> f b).到现在为止还挺好.现在我到了Applicative,在教科书中找不到任何提及这样的概念.通过查看它增加了Functor,ap :: f (a -> b) -> f a -> f b我试着拿出我自己的定义.
首先,我注意到,因为(->)它也是一种类型,态射Hask也是它的对象.鉴于此,我提出了一个建议,即应用仿函数是一个仿函数,它也可以将"箭头" - 源类别的对象映射到目标类型的态射.
这是正确的直觉吗?你能提供更正式和严谨的定义吗?
我很难让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) 我已经添加了putStrLn "Hello"一行到main我Setup.lhs的功能,并期待看到它运行时cabal configure或cabal build.但是我没有.
然后我编译Setup.lhs与ghc --make就跑./Setup configure,并证明就行了.
如果它已经完成了意图,我看不到这背后的理由,甚至需要在Setup.lhs档案中.你能帮我清楚这些事吗?
我目前正在使用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) 在我的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吗?
我正在学习反应性香蕉.为了理解库,我决定实现一个虚拟应用程序,只要有人按下按钮就会增加计数器.
我使用的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)