当调用add(4)时,我的main()在下面崩溃.
据我所知int*add,它应该返回一个指向整数的指针.然后,我应该能够主要说:
int*a = add(3);
返回指向int的指针.
请解释我做错了什么.
#include <cstdlib>
#include <iostream>
using namespace std;
int* add (int a) {
int * c, d;
d = a + 1;
*c = d;
cout << "c = " << c << endl;
return c;
}
int main(int argc, char *argv[])
{
int a = 4;
int * c;
c = add(4);
system("PAUSE");
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud) 最近我不得不更新我的JAVA环境变量 .bashrc
echo $ JAVA_HOME#打印出/ usr/java/...
echo $(JAVA_HOME)#引发错误"找不到JAVA_HOME命令"
我担心我的make文件使用后$(JAVA_HOME)会$JAVA_HOME被识别,但不会被识别$(JAVA_HOME)
我怎样才能达到目前设定的$(JAVA_HOME)平等$JAVA_HOME?另外,为什么会这样呢?
谢谢
以下是currying的一个很好的例子吗?
def sum(a: Int, b: Int) : (Int => Int) = {
def go(a: Int) : Int = {
a + b;
}
go
}
Run Code Online (Sandbox Code Playgroud)
我一半了解下面的结果,但我怎么能用sum()咖喱的方式写(或者我应该怎么写)呢?
scala> sum(3,4) res0: Int => Int = <function1>
scala> sum(3,4).apply(2) res1: Int = 6
scala> sum(3,4).apply(3) res2: Int = 7
Run Code Online (Sandbox Code Playgroud) 了解Haskell讨论以下数据类型:
data Day = Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday
deriving (Eq, Ord, Show, Read, Bounded, Enum)
Run Code Online (Sandbox Code Playgroud)
该书演示了如何使用readString将字符串解析为Day类型.
$ read "Saturday" :: Day
Saturday
Run Code Online (Sandbox Code Playgroud)
但是,我可以传入非Day值,从而导致异常.
$ read "foo" :: Day
*** Exception: Prelude.read: no parse
Run Code Online (Sandbox Code Playgroud)
read在上面的例子中,什么是类型安全的方法?
使用 AngularJS 1.2.16 和 Scala Play 2.2.0,我正在尝试启用 CORS。
这是我在前端的请求。基本上它是一个POST发送带有userName和password字段的JSON 。
Request URL:http://localhost:9000/login
Request Headers CAUTION: Provisional headers are shown.
Accept:application/json, text/plain, */*
Content-Type:application/json;charset=UTF-8
Origin:http://localhost:8000
Referer:http://localhost:8000/app.html
User-Agent:Mozilla/5.0 ...
Request Payloadview source
{userName:foo, password:bar}
Run Code Online (Sandbox Code Playgroud)
这checkPreFlight是允许我的POST请求标头的后端方法。
def checkPreFlight = Action {
Ok("...").withHeaders(
ACCESS_CONTROL_ALLOW_ORIGIN -> "*",
ACCESS_CONTROL_ALLOW_METHODS -> "POST",
ACCESS_CONTROL_MAX_AGE -> "300",
ACCESS_CONTROL_ALLOW_HEADERS -> "Origin, X-Requested-With, Content-Type, Accept,
Referer, User-Agent")
}
Run Code Online (Sandbox Code Playgroud)
routes:
POST /login controllers.Home.login
OPTIONS /login controllers.Home.checkPreFlight
Run Code Online (Sandbox Code Playgroud)
我的 Chrome 浏览器的控制台显示:
XMLHttpRequest cannot …Run Code Online (Sandbox Code Playgroud) 鉴于:
scala> val x: Either[Boolean, (Int, Int)] = Right( (5, 10) )
x: Either[Boolean,(Int, Int)] = Right((5,10))
Run Code Online (Sandbox Code Playgroud)
我想在第一个和第二个元组值上进行模式匹配x.right,但这不起作用:
scala> for {
| (a, b) <- x.right
| } yield a
<console>:14: error: constructor cannot be instantiated to expected type;
found : (T1, T2)
required: scala.util.Either[Nothing,(Int, Int)]
(a, b) <- x.right
^
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
scala> for { a <- x.right } yield a match { case (x, y) => x }
res5: scala.util.Either[Boolean,Int] = Right(5)
Run Code Online (Sandbox Code Playgroud)
但是,有什么方法可以让我改变我的第一个非编译代码吗?
" 使用Idris进行类型驱动开发 "一书介绍了此练习:
定义适合签名的可能方法:
two : (xs : Vect n elem) -> Vect (n * 2) elem
我试过了:
two : (xs : Vect n elem) -> Vect (n * 2) elem
two xs = xs ++ xs
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
*One> :r
Type checking ./One.idr
One.idr:9:5:When checking right hand side of two:
Type mismatch between
Vect (n + n) elem (Type of xs ++ xs)
and
Vect (mult n 2) elem (Expected type)
Specifically:
Type mismatch between
plus n n
and
mult …Run Code Online (Sandbox Code Playgroud) 在ScalaWorld 2015上,Edwin Brady在Idris上发表了精彩的演讲 - https://www.youtube.com/watch?v=X36ye-1x_HQ.
在其中一个例子中,我记得他展示了如何使用Idris编写代表有限状态机(FSM)的程序 - 用于打开和关闭门.他的FSM可能有点复杂,但是,考虑到以下状态:
data DoorState = DOpen | DClosed
data DoorAction = Open | Close
Run Code Online (Sandbox Code Playgroud)
我写了一个函数,给定一个DoorAction和DoorState,返回新的DoorState.
runDoorOp : DoorAction -> DoorState -> DoorState
runDoorOp Close DOpen = DClosed
runDoorOp Open DClosed = DOpen
Run Code Online (Sandbox Code Playgroud)
但是,上面的功能是局部的,例如:runDoorOp Open DOpen会崩溃.
我想过使用Either或Maybe数据类型,但我认为(从听到这个话题)可以在没有类型安全的情况下对这个FSM进行编码Either/Maybe.
什么是惯用的,Idris方式使用路径依赖类型编写上述函数,而不使用Maybe/Either?
ScalaCheck的GenAPI 文档解释lazy val sized:
def size [T](f:(Int)⇒Gen[T]):Gen [T]
创建可以访问其生成大小的生成器
看下面的例子:
import org.scalacheck.Gen.{sized, posNum}
scala> sized( s => { println(s); posNum[Int] })
res12: org.scalacheck.Gen[Int] = org.scalacheck.Gen$$anon$3@6a071cc0
scala> res12.sample
100
res13: Option[Int] = Some(12)
scala> res12.sample
100
res14: Option[Int] = Some(40)
Run Code Online (Sandbox Code Playgroud)
是什么意思generation size,即上述输出中的100?
查看Haskell中并行和并发编程的bracket功能:
bracket :: IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket before after during = do
a <- before
c <- during a `onException` after a
after a
return c
Run Code Online (Sandbox Code Playgroud)
如果发生异常,为什么after函数只被调用一次?换句话说,after a如果发生异常,我会对两次明显的执行感到困惑.
但是,代码显示,after a只有在我理解的情况下,才会调用:
?: >data MyException = MyException deriving Show
?: >instance Exception MyException
?: >let e = return MyException :: IO MyException
?: >bracket e (const $ putStrLn "clean up!") …Run Code Online (Sandbox Code Playgroud)