我最近选择了Haskell,语法对我来说真的很混乱.我试图使用0到51之间的随机数
randomRIO (0, 51)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使它成为一个实际的Int(现在它的类型IO a).我相信你应该能做到:
gen <- randomRIO (0, 51)
Run Code Online (Sandbox Code Playgroud)
然后gen应该是一个Int,但我必须在do块中这样做?如何创建获取此函数并返回Int的函数.从googeling我害怕有一些我不理解的基本知识.我完全迷失了.
参加操作系统课程,对于这个(和C)是新手,我真的不明白我的学习材料中陈述的事实.该程序假设暂停执行,直到发出kill-command(ctr + c或终端终止)从一开始该行是:
while (!done);
Run Code Online (Sandbox Code Playgroud)
但有人建议改变这个:
"使用while循环重复检查已完成的全局变量不是一种非常有效的CPU使用方法.更好的方法是将循环更改为:
while (pause()) {
if (done) break;
};
Run Code Online (Sandbox Code Playgroud)
"
系统在暂停期间做了什么()?如果它必须检查一个全局变量每个循环它真的可以做一些有用的事情吗?我认为pause()可能允许CPU接收其他工作,但是不检查变量毁了吗?
完整的代码如果它有帮助:
#include <stdio.h> // puts(), printf()
#include <signal.h> // SIGFPE, SIGSEGV, SIGINT
#include <stdlib.h> // exit(), EXIT_SUCCESS, EXIT_FAIURE
#include <unistd.h> // getpid(), pause()
#include <stdbool.h> // true, false
sig_atomic_t volatile done = false;
int divide_by_zero() {
int a = 1;
int b = 0;
return a / b;
}
void segfault() {
int *ptr = NULL;
*ptr = 42;
}
void signal_handler(int s) { …Run Code Online (Sandbox Code Playgroud) 我目前正在为我的(非常简单的)二十一点游戏编写单元测试,我的测试文件(Tests.hs)似乎没有导入我在文件中声明的数据结构(我正在进行单元测试(HelpFunctions.hs)).我可以访问此文件中的函数/方法,但不能访问数据结构.有人可以帮我找到问题吗?
这是我的测试文件的顶部:
module Tests(performTests) where
import Test.HUnit
import HelpFunctions
cardList = [(Hearts, Ace)]
(...)
Run Code Online (Sandbox Code Playgroud)
这是我要编写测试文件的顶部
module HelpFunctions(Suit, Value, blackjack, cardDeck, shuffleOne,
shuffleCards, getValue, addHand, dealCard, bust,
getHighest
) where
import System.Random
import Control.Monad(when)
{- Suit is one of the four suits or color of a playing card
ie Hearts, Clubs, Diamonds or Spades
INVARIANT: Must be one of the specified.
-}
data Suit = Hearts | Clubs | Diamonds | Spades deriving (Show)
{- Value is the numeric value of …Run Code Online (Sandbox Code Playgroud)