假设我有一个名为"input.txt"的txt文件,我想使用scala来读取它.文件的维度在开头不可用.
那么,如何构造这样的数组[Array [Float]]?我想要的是一种简单而整洁的方式,而不是像Java一样编写一些代码来遍历行并解析每个数字.我认为函数式编程应该很擅长......但到目前为止还不能想到.
最好的祝福
给定一个集合,其中每个元素都是一个字符串,如何将集合减少为一个整数,这个整数是这些字符串长度的总和?
setA = ("hi", "hello", "bye")
reduce(lambda .... for word in setA)
Run Code Online (Sandbox Code Playgroud)
使用一些lambda函数调用reduce应该返回10(2 + 5 + 3).
我想,我可以用几个lambdas做到这一点,但必须有一个更清洁的方式.
假设我有一个功能:
isOne :: Int -> Int -> Int
isOne x y =
Run Code Online (Sandbox Code Playgroud)
然后,如果x == 1和y != 1然后返回1(参数之一等于1),如果x == 1和y == 1它返回2(因为两者都是1),如果x != 1和y != 1它返回0等
我无法弄清楚如何使用if语句(或使用案例)进行多次检查.
这是我对list-basedquicksort的实现:
let partition pivot l =
let rec p left right = function
| [] -> (left, right)
| hd::tl ->
let c = compare pivot hd
in
if c > 0 then
p (hd::left) right tl
else
p left (hd::right) tl
in
p [] [] l;;
let quicksort l =
let rec qs = function
| [] -> []
| pivot::tl ->
let (left, right) = partition pivot tl
in
(qs left) @ (pivot::(qs right))
in
qs …Run Code Online (Sandbox Code Playgroud) 如果您有这些Haskell数据类型
data Mlist a = Mlist [a]
data Mordering = MLT | MEQ | MGT | MIN deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)
什么是在java中写这个的最好方法?
我正在处理很长的名单和大树.
有时候我会发现这个错误:
surgery a;;
Characters 8-9:
surgery a;;
^
Error: This expression has type int t/1044
but an expression was expected of type 'a t/1810
# type 'a t = | Leaf of ('a -> 'a -> int)
| Node of 'a * 'a t * 'a t * ('a -> 'a -> int)
Run Code Online (Sandbox Code Playgroud)
我不确定这种错误是什么类型,但我想这是某种溢出.类型匹配正确,但在类型后面的反斜杠后面有大数字.在这种情况下,1044和1810.
这次我之前运行了一些代码surgery a.如果我杀死当前的顶级并重新开始,surgery a就会运行.
我的问题是:
1.这个错误究竟是什么?
2.何时以及如何发生?
3.为什么从新的顶层重新运行它会使它工作?
4.我该如何处理?
error-handling ocaml functional-programming overflow large-data
我正在in-place graph BFSOCaml中实现.
这是我的代码:
type graph = {s : int list array;num_v:int;mutable num_e : int};;
let bfs u g p =
let marker = Array.make g.num_v false
in
let q = Queue.create()
in
Queue.push u q;
let rec add_to_queue v = function
| [] -> ()
| hd::tl ->
if not marker.(hd) then begin
marker.(hd) <- true;
Queue.push hd q;
p.(hd) <- v
end;
add_to_queue v tl
in
**let rec bfs_go =**
if Queue.length q > 0 then …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用下面的函数计算谐波系列.但是有一个类型错误,不太确定它是什么意思?另一个问题,为什么[5..1]会给出一个空列表?
sumHR = foldr(+)0(\ x - > map(1 /)[1..x])
错误信息:
*** Expression : foldr (+) 0 (\x -> map (1 /) (enumFromTo x 1))
*** Term : \x -> map (1 /) (enumFromTo x 1)
*** Type : b -> [b]
*** Does not match : [a]
Run Code Online (Sandbox Code Playgroud) 这是我关于haskell的第二个问题,我认为我的algorhythm并不坏,它在c ++和python中提供更快的结果,并且在haskell有一些问题它不能给我10 ^ 25(也许它给了但我不等那么多)和这个问题问我这个价值,请指导我解决这个家伙,谢谢你.
##Euler 169##
giveRes 0 _= 1
giveRes 1 _= 1
giveRes a x = if search a x
then send a x
else let res = if rem a 2 == 0
then (giveRes (quot a 2) x)
+
(giveRes (quot a 2-1) x)
else giveRes (quot a 2) x
in snd (head ((a,res):x))
search _ [] = False
search a (x:xs) = if a == fst x then True else search a xs
send a …Run Code Online (Sandbox Code Playgroud) Scala是一种多范式语言,功能是这些范例之一.我想学习函数式编程,Scala还有许多吸引我的特性(它是一颗冉冉升起的新星,在JVM上运行,可以访问Java库等).我的问题是:Scala的功能部分是否足以学习函数式编程的基础知识?