小编Mih*_*eac的帖子

有没有人知道TikZ的非TeX等价物?

到目前为止,我已经使用Graphviz以编程方式创建图表和图形.最近,我发现了TikZ,我开始喜欢它.但是,在我的一些预期用途中依赖于TeX,LaTeX等会有些过分.因此,我想看看是否有与Tikz类似的应用程序没有与TeX概念链接.

我主要打算在Haskell,Python和C中使用它.因此,对这些语言的绑定将是一个很大的优点.

谢谢

(希望,我把它发布在正确的地方.我看到有一个相关的问题,但那个解决方案并没有真正帮助我)

c python haskell graphviz tikz

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

如何从类型重构Haskell表达式

我正在编写一个程序,对于给定的类型签名重建这种类型的Haskell表达式,例如:for for a -> b -> areturn \x -> \_ -> x.我已经读过这个问题背后的理论,我知道有这个霍华德 - 库里的同构.我想我的程序解析输入并将其表示为术语.然后我会触发SLD分辨率,告诉我是否可以构造给定类型的术语(例如,对于Pierce来说,这是不可能的).我还不知道如何在此分辨率期间实际创建Haskell表达式.我已经看过djinn的代码,但它有点复杂,我想掌握一些关于它如何工作的一般概念.

logic haskell types type-inference

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

如何从Linux内核访问用户空间内存?

我知道copy_to_user/ copy_from_user,get_user/ put_user函数就是为了这个目的.

我的问题是,给定一个用户空间地址/指针,如何从内核中访问地址所指向的数据?

我可以想象,首先我必须确保包含页面应该在物理内存中(而不是在磁盘中).

你下一步怎么做?我可以使用*p,其中p的指针指向某些用户空间中的数据,直接引用的数据?

或者我是否必须先调用kmap将包含的物理页面框架映射到内核虚拟地址空间?为什么?

memory-management linux-kernel

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

Python 3 urllib.request.urlopen

urllib.request.urlopen如果response.status_code不是200,我怎样才能避免例外?现在它提出URLErrorHTTPError基于请求状态.

有没有其他方法来使用python3基本库进行请求?

如果能获得响应头status_code != 200

python exception urllib httprequest python-3.4

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

Jekyll - 将多个URL映射到同一个Jekyll文件

我有一个Jekyll的自定义页面:我有一个news.markdown如下文件:

{% assign posts_per_page = 5 %}
{% for post in site.categories.ro offset:pagination_skip limit:posts_per_page %}
    ...
    {{ post.content }}
    ...
{% endfor %}
{% include nav.html %}
Run Code Online (Sandbox Code Playgroud)

nav.html_includes目录中,它看起来是这样的:

{% if pagination_skip %}
  {% capture pagination_skip %}
    {{pagination_skip | plus: posts_per_page}}
  {% endcapture %}
{% else %}
  {% assign pagination_skip = posts_per_page %}
{% endif %}

<div class="next">
  <a rel="prev" href="{{site.basepath}}ro/news/{{ pagination_skip }}">Next</a>
</div>
Run Code Online (Sandbox Code Playgroud)

我想是的URL .../ro/news/5映射到的内容news.markdown,从而pagination_skip存在5.同样适用于10,15,无论如何.而且,.../ro/news/0应该尽可能相同 …

jekyll

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

如何以小写"显示"构造函数

假设我想创建一个新的数据类型并使构造函数可以显示,只是小写而不是大写的定义.例如:

data Day = Monday | Tuesday | Wednesday| Thursday | Friday | Saturday | Sunday
Run Code Online (Sandbox Code Playgroud)

通过添加派生显示,ghci会将它们打印为"星期一,星期二......等" 为了让它显示"星期一,星期二......等",我试图制作一个特殊的show实例:

import Data.Char

strToLower :: [Char] -> [Char]
strToLower (x:xs) = toLower x : strToLower xs
strToLower [] = []

instance Show Day where
   show d = strToLower (show d)
Run Code Online (Sandbox Code Playgroud)

show的第一次出现应该指定我新修改的show函数(每次打印时都会调用),而对于第二次我打算通常派生的show版本,从构造函数名称到String.

当然这不起作用(循环定义),因为ghci对我的"show"这个词的单独含义没有任何线索,但我无法弄清楚如何让他知道这个区别,因为这两个版本都需要命名为show ,第一个是因为这是打印调用和第二个因为它是一个预定义的haskell函数,它可以给我一个构造函数名称的字符串.我试过了

show d = strToLower ((showsPrec 0 d) "")
Run Code Online (Sandbox Code Playgroud)

但这归结为相同的循环定义,至少这是我从ghci卡在循环中的猜测.

我理解为什么构造函数名称需要以大写字母开头,但显示小写字母应该不是问题,是吗?我知道我可以单独为每个案例定义我的show函数,例如show Monday = "monday" show Tuesday = "tuesday"etc,但我只是以星期几为例,我的真实数据类型由64个构造函数组成,所以我认为它会更优雅以某种方式解决它.

是否有可能深入了解show的haskell定义并更改该代码的副本?这是我能想到的唯一可能的解决方案,但我不知道该怎么做,如果可能的话.可能不是.所以其他解决方案也非常受欢迎!

感谢您抽出宝贵时间

杰勒(哈斯克尔初学者)

haskell show

6
推荐指数
2
解决办法
1097
查看次数

函数退出(退出代码)是否关闭了套接字描述符?

我用 c-unix 语言创建了一个多进程客户端 - 服务器。与客户端的每个连接都作为子进程进行管理。发生错误时,我只是调用函数 exit(EXIT_FAILURE),因为我读到该函数会关闭所有打开的流。问题是:我必须关闭客户端套接字描述符还是自动关闭?

我的代码的一个例子是:

while(1){
    if((client_sock=accept(ds_sock,&client,&s_client))==-1){
        printf("Accept error\n");
        exit(EXIT_FAILURE);
    }
    if(fork()==0){  //child
        if((close(ds_sock)==-1)){
            printf("Closing error\n");
            exit(EXIT_FAILURE);
        }
        if((read(client_sock,&up,sizeof(userpass)))==-1){
            printf("Error read\n");
            exit(EXIT_FAILURE); //Does this instruction close the client_sock too?
        }
Run Code Online (Sandbox Code Playgroud)

c sockets exit

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

如何获得更简单但相当于Haskell表达式的版本

虽然我已经学习了Haskell一段时间,但我经常遇到一个常见的问题.我们以此表达式为例:

e f $ g . h i . j
Run Code Online (Sandbox Code Playgroud)

有人可能想知道,给出$.来自Prelude,什么是类型约束eh表达有效?

是否有可能获得"更简单"但等效的表示?对我来说,"更简单"将是一个在任何地方都使用括号的人,并且无需定义运算符优先级规则.

如果没有,我需要阅读哪些Haskell报告部分才能获得完整的图片?

这可能与许多新手Haskell程序员有关.我知道许多程序员添加括号,这样他们就不需要记住(或理解)像这样的优先级表:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

haskell

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

MPI_Recv中的消息被截断

我有邻接矩阵和以下代码:

if (is_broadcast_message) {
    MPI_Send(&broadcast_message,1,MPI_INT,j,3,MPI_COMM_WORLD);
    MPI_Send(&message,20,MPI_CHAR,j,3,MPI_COMM_WORLD);
}
Run Code Online (Sandbox Code Playgroud)

哪里broadcast_message=128(随机数只是为了知道我什么时候收到的,这是广播消息)

消息定义为char [20]。

else if (i have to send only to a node) {
    MPI_Send(&destination,1,MPI_INT,next_hop[destination],3,MPI_COMM_WORLD);
    MPI_Send(&message,20, MPI_CHAR, next_hop[destination],3,MPI_COMM_WORLD);
}
Run Code Online (Sandbox Code Playgroud)

收到邮件时,我首先要检查recv_payload128(广播值)还是其他值:

MPI_Recv(&recv_material,1,MPI_INT,MPI_ANY_SOURCE,3,MPI_COMM_WORLD,&status2);
Run Code Online (Sandbox Code Playgroud)

如果是128,则:

MPI_Recv(&message,20,MPI_CHAR,from_d,3,MPI_COMM_WORLD,&status2);
Run Code Online (Sandbox Code Playgroud)

我正在将消息转发到所有流程

MPI_Send(&message,20,MPI_CHAR,j,3,MPI_COMM_WORLD);
Run Code Online (Sandbox Code Playgroud)

如果不是128,我正在检查我是否是目的地:

if(recv_material == rank)
    MPI_Recv(&mesaj,20,MPI_CHAR,from_d,3,MPI_COMM_WORLD,&status2);
Run Code Online (Sandbox Code Playgroud)

否则,我正在发送nexthop [recv_material]

MPI_Send(&mesaj,20,MPI_CHAR,next_hop[recv_material],3,MPI_COMM_WORLD);
Run Code Online (Sandbox Code Playgroud)

问题是我收到以下错误,但我不知道为什么:

Fatal error in MPI_Recv: Message truncated, error stack:
MPI_Recv(186).....................: MPI_Recv(buf=0x7fffbce8f2a4, count=1, MPI_INT
src=MPI_ANY_SOURCE, tag=3, MPI_COMM_WORLD, status=0x7fffbce8f250) failed
MPIDI_CH3U_Receive_data_found(129): Message from rank 7 and tag 3 truncated;
20 bytes   received but buffer size is …
Run Code Online (Sandbox Code Playgroud)

c c++ mpi

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

为什么haskell表现比java差

我想用随机数来愚弄,如果haskell中的随机生成器是否均匀分布,那么我在几次尝试之后写了下面的程序(生成列表导致堆栈溢出).

module Main where

import System.Environment (getArgs)
import Control.Applicative ((<$>))
import System.Random (randomRIO)

main :: IO ()
main = do nn <- map read <$> getArgs :: IO [Int]
          let n = if null nn then 10000 else head nn
          m <- loop n 0 (randomRIO (0,1))
          putStrLn $ "True: "++show (m//n::Double) ++", False "++show ((n-m)//n :: Double)
          return ()

loop :: Int -> Int -> IO Double -> IO Int
loop n acc x | n<0       = return acc …
Run Code Online (Sandbox Code Playgroud)

java performance haskell

5
推荐指数
2
解决办法
701
查看次数