小编Geo*_*rge的帖子

如何将内联组织模式图像重新缩放到特定宽度?

以下表示缩放到 size 的 org-mode 图片width="300"。当我在浏览器中预览我的文档时,图像被成功地调整为 300px 宽度;但是,当我使用C-c C-x C-v(ie, org-toggle-inline-images)内联预览图像时,图像会显示但无法调整为宽度 300px

#+ATTR_HTML: width="300"
[[file:/path/to/picture.png]]
Run Code Online (Sandbox Code Playgroud)

问题:如何将内联组织模式图像重新缩放到特定宽度?

image org-mode

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

在clojurescript中返回一个唯一的通道

目标:构造一个ClojureScript函数,该函数接受一个字符串s并返回带有名称的唯一通道(str s "-chan")(如果该通道不存在,则创建它).这是我的尝试:

(defn string-channel 
  [s]
  (let [chan-name (symbol (str s "-chan"))]
    (defonce chan-name (chan))
    chan-name))
Run Code Online (Sandbox Code Playgroud)

这会产生错误.我如何实现这一目标?请注意,由于我在ClojureScript中,eval如果解决方案涉及宏,我无法使用该构造.

clojure clojurescript

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

定义指向OpenGL顶点数组对象的指针

请考虑以下OpenGL代码段:

GLuint vao;
glCreateVertexArrays(1, glBindVertexArray(&vao));    
Run Code Online (Sandbox Code Playgroud)

我的印象是这段代码的作用是什么

  1. 创建一个类型的指针,该指针GLuint最终将指向OpenGL顶点数组对象.这个指针的名字是vao.
  2. 通过OpenGL间接为实际的顶点数组对象分配内存(即,不使用mallocC或newC++).这样做的方法是通过该功能glCreateVertexArrays.此函数还使指针vao指向顶点数组对象.

我的理解是否正确?如果是这样,在(1)中,为什么指针的类型GLuint没有明确定义为指针类型(例如*在C/C++中或使用OpenGL类型GLintptr)?

opengl

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

了解Haskell流行的optparse-applicative库的介绍性代码片段

来自流行的optparse库的介绍性代码片段:

data Sample = Sample
  { hello :: String
  , quiet :: Bool }

sample :: Parser Sample
sample = Sample
  <$> strOption -- Q1
      ( long "hello"
     <> metavar "TARGET" -- Q2
     <> help "Target for the greeting" )
  <*> switch
      ( long "quiet"
     <> help "Whether to be quiet" )
Run Code Online (Sandbox Code Playgroud)

有关我的问题/疑惑,请参阅代码段中的注释.

Q1:如何将它<$>用作类型构造函数的第一个参数Sample?我认为这个操作必须在函数和仿函数之间使用.

Q2:<>此代码段中使用的操作是什么?

haskell optparse

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

IO Monads:GHC实现意义与数学意义

考虑

ioFunction :: String -> IO ()
ioFunction str = do putStrLn str
                    putStrLn "2"
Run Code Online (Sandbox Code Playgroud)

这里,ioFunction从数学的角度来看,是一个函数,它接受一个输入并返回一个类型的值IO ().我认为这意味着什么.也就是说,从数学的角度来看,这个函数返回一个值,而不是别的; 特别是,它不会打印任何东西.

这是否意味着Haskell使用IO monad进行命令性副作用的方式(在这种情况下:运行此函数将首先打印str,然后按顺序打印"2")纯粹是GHC实现细节,没有任何内容做数学(在某种意义上甚至是Haskell)这个术语的含义?

编辑:为了使这个问题更清楚,我的意思是,例如,以下两个函数之间的数学观点有什么不同:

ioFunction1 :: String -> IO ()
ioFunction1 str = do putStrLn str
                     putStrLn "2"


ioFunction2 :: String -> IO ()
ioFunction2 str = do return ()
Run Code Online (Sandbox Code Playgroud)

似乎答案是否定的,因为 - 从数学的角度来看 - 它们都作为输入a String并返回类型的值(可能是相同的值)IO ().这不是这种情况吗?

monads haskell

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

写一个替换宏的参数

假设我们有一个_在任意位置的列表.例如:(a b c _ e f).我试图写一个宏其中,对于这样一个列表,找到_并用另一个值(比方说,替换它z)(a b c z e f).

对此最好的方法是什么?

clojure clojurescript

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

限制类型参数在数据声明中可以采用的类型

我知道Haskell具有参数化的数据类型:

data Maybe a = Nothing | Just a
Run Code Online (Sandbox Code Playgroud)

但有没有办法限制a可以表示的类型?特别是,我想创建一个类型

data Tag a = Tag a
Run Code Online (Sandbox Code Playgroud)

这样a可以采取两种类型TagPrimitive 类型TagComplex(但是,我不希望它是可能的,a是的类型,比方说,IntegerString什么的,让我的程序没有意义).

这可能吗?

haskell types singleton-type

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

从 Haskell 记录中查找键(解析为字符串)

假设我有一个 Haskell 记录

data HaskellRecord = HaskellRecord {
  _key1 :: Maybe String
, _key2 :: Maybe String
, _key3 :: Maybe String
}
Run Code Online (Sandbox Code Playgroud)

有没有办法构造函数

getKey :: HaskellRecord -> String -> Maybe String
Run Code Online (Sandbox Code Playgroud)

这样,与

let haskellRecord = HaskellRecord { _key1 = Just "value1"
                                  , _key2 = Just "value2"
                                  , _key3 = Just "value3"
                                  }
Run Code Online (Sandbox Code Playgroud)

然后

getKey haskellRecord "value1" == Just "_key1"
getKey haskellRecord "value2" == Just "_key2"
getKey haskellRecord "value3" == Just "_key3"
getKey haskellRecord "value4" == Nothing
Run Code Online (Sandbox Code Playgroud)

haskell

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

内存来自于在没有new关键字的情况下初始化C++对象?

考虑代码段:

ClassName* p;
p = new ClassName;
Run Code Online (Sandbox Code Playgroud)

据我了解,我们正在从堆中分配内存到存储*p.

但现在考虑:

ClassName C;
Run Code Online (Sandbox Code Playgroud)

问题:如果不是从堆中,内存C来自哪里?

c++

-7
推荐指数
1
解决办法
127
查看次数