小编Rah*_*ahn的帖子

Haskell中"Just"语法意味着什么?

我已经在网上搜索了这个关键字的实际解释.我看过的每个Haskell教程都是随机开始使用它,而不是解释它的作用(我看过很多).

这是Real World Haskell使用的基本代码Just.我理解代码的作用,但我不明白它的目的或功能Just是什么.

lend amount balance = let reserve    = 100
                      newBalance = balance - amount
                  in if balance < reserve
                     then Nothing
                     else Just newBalance
Run Code Online (Sandbox Code Playgroud)

从我所观察到的,它与Maybe打字有关,但这几乎是我所学到的.

Just非常感谢对什么方法的一个很好的解释.

syntax haskell

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

'\ 0'计算为false,"\ 0"计算为true

灵感来自K&R第5.5节中描述的程序:

void strcpy(char *s, char *t)
{
    while(*s++ = *t++);
}
Run Code Online (Sandbox Code Playgroud)

C程序

if ('\0') { printf("\'\\0\' -> true \n"); }
else      { printf("\'\\0\' -> false\n"); }

if ("\0") { printf("\"\\0\" -> true \n"); }
else      { printf("\"\\0\" -> false\n"); }
Run Code Online (Sandbox Code Playgroud)

版画

'\0' -> false
"\0" -> true
Run Code Online (Sandbox Code Playgroud)

为什么'\0'"\0"评价不同的C 2

clang版本3.8.0

c arrays string null kernighan-and-ritchie

56
推荐指数
3
解决办法
6923
查看次数

在haskell中等于(=)Vs左箭头(< - )符号

工作代码:

import System
main = do
     [file1, file2] <- getArgs
     --copy file contents
     str <- readFile file1
     writeFile file2 str
Run Code Online (Sandbox Code Playgroud)

崩溃的代码:

import System
main = do
       [file1, file2] = getArgs
       str = readFile file1
       writeFile file2 str
Run Code Online (Sandbox Code Playgroud)

当我尝试时,它抛出一个错误:

a.hs:6:18:输入'='解析错误

那么,如何不同是<-=

haskell

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

:糟糕的解释器:python中没有这样的文件或目录

我最初在Windows上的python IDE中编码.现在,当我将我的代码粘贴到Linux服务器上的文件中时.现在当我运行脚本时,它给了我这个错误:

坏解释器:没有这样的文件或目录

请告诉我们如何解决此错误.

python

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

Linux,C++,ThirdParty库

好的只是一个简单的问题.我在Windows上使用Visual C++进行编程,并且为了学习目的已经更改为Ubuntu并在Code :: Blocks,CodeLite和Eclipse中启动.我已经编写了一些简单的程序,SDL2并使用GLEW基于SDL2窗口的简单OpenGL应用程序.我用命令下载了库:

sudo apt-get install ...

我的主要问题是:因为这个应用程序是在外部库(rellying SDL2,glew,flu,OIS),它并没有在其他Linux计算机上运行.使用终端命令安装所有这些库后,程序将无法执行.我的问题是,是否可以构建不需要安装这些库的程序.例如,在Windows上,您将程序链接到文件夹SDL2.lib并包含SDL2.dll.exe文件夹中.我怎么能在linux上做到这一点.我对linux编程以及工作原理的经验很少,所以我希望这只是一个基本问题.:)

c++ linux glew sdl

15
推荐指数
2
解决办法
1150
查看次数

swipl:如何重新加载文件

首先我加载文件 SWI-Prolog

$ swipl file.pl
Run Code Online (Sandbox Code Playgroud)

然后我修改文件并保存.

现在我如何重新加载文件

?- reload
Run Code Online (Sandbox Code Playgroud)

为此修改file.pl

prolog swi-prolog

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

将IO Int转换为Int

我已经创建了一个组合框,从使用该函数转换xmlWidget为a comboBox,castTocomboBox现在我想获取活动项的文本或索引.问题是如果我使用该comboBoxGetActive函数它会返回一个IO Int结果,我需要知道如何获取该Int值.我试着阅读关于monads的内容,这样我就能理解在这样的情况下可以做些什么,但我似乎并不理解.我很感激能得到的所有帮助.我应该提一下,我用Gladegtk2hs.

io syntax monads haskell

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

证明换位定理

我在命题逻辑中证明了一些定理.

Modus Ponens说,如果P暗示Q和P为真,则Q为真

P ? Q
P
-----
Q
Run Code Online (Sandbox Code Playgroud)

将在Haskell中解释为

modus_ponens :: (p -> q) -> p -> q
modus_ponens pq p = pq p
Run Code Online (Sandbox Code Playgroud)

您可能会发现它的类型等同于定理,程序等同于证明.

逻辑分离

data p \/ q = Left  p
            | Right q
Run Code Online (Sandbox Code Playgroud)

逻辑连接

data p /\ q = Conj p q
Run Code Online (Sandbox Code Playgroud)

当且仅当

type p <-> q = (p -> q) /\ (q -> p)
Run Code Online (Sandbox Code Playgroud)

承认用于假设没有证据的公理

admit :: p
admit = admit
Run Code Online (Sandbox Code Playgroud)

现在我无法证明换位定理:

(P ? Q) ? (¬Q ? ¬P)
Run Code Online (Sandbox Code Playgroud)

它由两部分组成:

左到右:

P …
Run Code Online (Sandbox Code Playgroud)

haskell

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

防止特征函数被其他结构实现

我只是构建了一个Bar具有 2 个函数的特征(alpha()带有实现和beta()仅带有接口),并且我希望实现的结构Bar只实现beta(),而不是实现自己的alpha()

有什么方法可以阻止另一个结构实现自己的结构alpha()吗?

trait Bar {
    fn alpha(&self) {
        println!("you should never implement this function on your own.");
    }

    fn beta(&self);
}

struct Foo {}


impl Bar for Foo {
    fn alpha(&self) {
        println!("how do I trigger an error here when a struct implement it's own alpha()?");
    }

    fn beta(&self) {
        println!("implement beta() for Foo");
    }
}
Run Code Online (Sandbox Code Playgroud)

traits rust

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

clang++-12 找不到库范围

我正在测试 C++ 20 的范围,这是我的main.cpp

#include <ranges>
#include <iostream>

int main()
{
    auto const ints = {0,1,2,3,4,5};
    auto even = [](int i) { return 0 == i % 2; };
    auto square = [](int i) { return i * i; };

    for (int i : ints | std::views::filter(even) | std::views::transform(square)) {
        std::cout << i << ' ';
    }

    std::cout << '\n';
}

Run Code Online (Sandbox Code Playgroud)

编译它clang++-12但找不到“范围”:

$ clang++-12 --version
Ubuntu clang version 12.0.1-++20210525082622+328a6ec95532-1~exp1~20210525063352.95
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin …
Run Code Online (Sandbox Code Playgroud)

c++ clang c++20 std-ranges

10
推荐指数
0
解决办法
5599
查看次数

标签 统计

haskell ×4

c++ ×2

syntax ×2

arrays ×1

c ×1

c++20 ×1

clang ×1

glew ×1

io ×1

kernighan-and-ritchie ×1

linux ×1

monads ×1

null ×1

prolog ×1

python ×1

rust ×1

sdl ×1

std-ranges ×1

string ×1

swi-prolog ×1

traits ×1