我在C和Haskell中编写了2个冒泡排序算法的实现.Haskell实现:
module Main where
main = do
contents <- readFile "./data"
print "Data loaded. Sorting.."
let newcontents = bubblesort contents
writeFile "./data_new_ghc" newcontents
print "Sorting done"
bubblesort list = sort list [] False
rev = reverse -- separated. To see
rev2 = reverse -- who calls the routine
sort (x1:x2:xs) acc _
| x1 > x2 = sort (x1:xs) (x2:acc) True
sort (x1:xs) acc flag = sort xs (x1:acc) flag
sort [] acc True = sort (rev acc) [] False …Run Code Online (Sandbox Code Playgroud) 我在haskell中编写应用程序,我想将一些函数和数据类型导出到其他文件,然后能够在我的主文件中使用它们.
这该怎么做 ?
感谢帮助
如何在Scheme中使用数组?
特别是,我正在尝试使用memoization实现递归的fibonacci过程.Scheme中是否存在数组?
如果没有,我该如何实现memoization?
以下过程在方案r6rs和Racket中都有效:
;; create a list of all the numbers from 1 to n
(define (make-nums n)
(do [(x n (- x 1)) (lst (list) (cons x lst))]
((= x 0)
lst)))
Run Code Online (Sandbox Code Playgroud)
我已经为r6rs和Racket测试了它并且它确实正常工作,但我只知道DrRacket肯定.
我的问题是,如果保证了一步表达式((- x 1)和(cons x lst)在这种情况下)将按顺序进行评估.如果不能保证,那么我的程序不是很稳定.
我没有在任何一种语言的标准中看到任何指定这一点的东西,但我在这里问,因为当我测试时它按顺序进行了评估.
计算出现在Oracle数据库列中的字符串中的所有非字母数字字符的出现的最佳方法是什么.
在尝试找到解决方案时,我意识到我有一个与问题无关的查询,但我注意到我可以修改它以希望解决这个问题.我想出了这个:
SELECT COUNT (*), SUBSTR(TITLE, REGEXP_INSTR(UPPER(TITLE), '[^A-Z,^0-9]'), 1)
FROM TABLE_NAME
WHERE REGEXP_LIKE(UPPER(TITLE), '[^A-Z,^0-9]')
GROUP BY SUBSTR(TITLE, REGEXP_INSTR(UPPER(TITLE), '[^A-Z,^0-9]'), 1)
ORDER BY COUNT(*) DESC;
Run Code Online (Sandbox Code Playgroud)
这可以找到FIRST非字母数字字符,但我想计算整个字符串中的出现次数,而不仅仅是第一次出现的次数.E. g.目前我的查询分析"a(字符串)"将找到一个开括号,但我需要它找到一个左括号和一个闭括号.
我正在解决一个问题的解决方案,这需要改变模块的一个功能gb_trees.
我收到编译版本的错误gb_trees:
1> c(gb_trees).
cannot write to .bea#
...
2>
Run Code Online (Sandbox Code Playgroud)
我可以通过什么方式进行更改并编译已有的模块?
我做了一个表查询是
CREATE TABLE questions (
_id INTEGER PRIMARY KEY AUTOINCREMENT
, question TEXT
, correct_answer TEXT DEFAULT (null)
, answer1 TEXT DEFAULT (null)
, answer2 TEXT DEFAULT (null)
, answer3 TEXT DEFAULT (null)
, answer4 TEXT DEFAULT (null)
, difficulty INTEGER DEFAULT (null)
, nid INTEGER
);
Run Code Online (Sandbox Code Playgroud)
现在想要省略correct_answer列,并在answer1列中做出正确答案,在answer2,answer3,answer4中做出其他3个错误答案.但问题是目前正确答案可能是四个中的任何一个,所以我无法合并
作为示例表就像

你可以在第一行看到答案2中的正确答案,第二行正确答案在答案4中
那么我怎么只在answer1栏和answer2,answer3,answer4中分别得到正确的答案?
什么是SQL查询?或任何其他想法?
我想匹配Racket(以前的PLT Scheme)中的以下两个列表之一:
'(somename : (_ptr o sometype))
Run Code Online (Sandbox Code Playgroud)
要么
'(somename : (_ptr io sometype))
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,唯一的区别是嵌入式列表中的文字"o"和"io".
我可以看到两种基本方法来做到这一点.
或者:
(match myexpr
[(list name ': (list '_ptr 'o _)) name]
[(list name ': (list '_ptr 'io _)) name]
[_ 0])
Run Code Online (Sandbox Code Playgroud)
这似乎是重复的努力,但非常清楚.要么:
(match myexpr
[(list name ': (list '_ptr mode _))
(if (or (eq? mode 'o)
(eq? mode 'io))
name
0)]
[_ 0])
Run Code Online (Sandbox Code Playgroud)
这避免了几乎重复的模式,但不太清楚.
我的问题是,有没有办法在球拍模式匹配中指定替代品,类似{'o | "IO}?而且,如果没有,上面列出的两种方式中的哪一种将是最惯用的Racket方式?
这是我第一次使用Scheme.我有一个整数列表,我想得到列表中所有偶数的总和.
; sum_even
(define (sum_even l)
(if (null? l) l
(cond ((even? (car l)) 0)
((not(even? (car l))) (car l)))
(+ (sum_even (car l) (sum_even(cdr l))))))
(sum_even '(2 3 4))
Run Code Online (Sandbox Code Playgroud) 以下过程如何工作:
(define integers
(cons-stream 1
(stream-map (lambda (x) (+ x 1))
integers))
Run Code Online (Sandbox Code Playgroud) racket ×3
scheme ×3
haskell ×2
sql ×2
alphanumeric ×1
bubble-sort ×1
c ×1
database ×1
do-loops ×1
erlang ×1
erlang-otp ×1
list ×1
memoization ×1
mysql ×1
optimization ×1
oracle ×1
regex ×1
stream ×1