我正在努力学习命令式和函数式语言之间的差异.
而且,我想了解闭包以及如何实现垃圾收集器.所以我决定尝试为函数式语言实现解释器.
由于我不熟悉函数式语言,因此我很难设计它.是否有一些关于简单函数语言的语法和语义的资源?有关如何执行此操作的教程将非常有用.
functional-programming language-design language-implementation
这是一些排序:我有一个带有ID,名称和评级的表.我想根据评分列出10个最佳项目,这很好:
SELECT id FROM items ORDER BY ratings DESC LIMIT 10
Run Code Online (Sandbox Code Playgroud)
但现在出现了困难的部分:我想根据评级列出10个最佳项目,但按字母顺序排序.我试过了
SELECT id FROM items ORDER BY ratings DESC, names ASC LIMIT 10
Run Code Online (Sandbox Code Playgroud)
和
SELECT id FROM items ORDER BY names ASC, ratings DESC LIMIT 10
Run Code Online (Sandbox Code Playgroud)
但都没有给出理想的结果.
我写了两个像这样的函数,但是你看到它们中的大多数都是相同的,所以我想编写一个宏来简化它们.
我理解教科书中的简单宏示例,但我不知道如何编写自己的.
这是我的代码:
(defn load-dict
; "Load database from a txt file previous saved"
[fname]
(with-open [rdr (io/reader fname)]
(doseq [line (line-seq rdr)]
(println line)
(def vvv (clojure.string/split line #"\s"))
;(println (str "count of vvv is " (count vvv)))
(if (< 1 (count vvv))
(add- dict (gen-word (nth vvv 0) (nth vvv 2) (nth vvv 1))))
)))
(defn load-article
; "Load article from a txt file"
[fname]
(with-open [rdr (io/reader fname)]
(doseq [line (line-seq rdr)]
(println line)
(def vvv (clojure.string/split …
Run Code Online (Sandbox Code Playgroud) 在尝试编写一个用于转置列表列表的函数时,我看到了一些非常好奇的东西.我试过了:
> let abc xs | null (head xs) = [] | otherwise = map head xs : abc $ map tail xs
Run Code Online (Sandbox Code Playgroud)
并得到一个错误.然后我尝试了:
> let abc xs | null (head xs) = [] | otherwise = map head xs : abc ( map tail xs )
> abc [[1,2,3], [4,5,6], [7,8,9]]
[[1,4,7],[2,5,8],[3,6,9]]
Run Code Online (Sandbox Code Playgroud)
我被引导相信$
可以使用运算符而不是括号,而那更像是Haskellish.为什么我收到错误?
我想根据其值创建列表的子集.例如:
List (AA AB BA DC AD)
Run Code Online (Sandbox Code Playgroud)
我想要一个列表,其中包含所有原子的值,从'A'开始.所以答案应该是:
(AA AB AD)
Run Code Online (Sandbox Code Playgroud)
我现在可以通过遍历整个列表并将每个值转换为另一个列表并读取第一个值然后重新创建列表来实现此目的.
这是一个非常复杂的解决方案.
Scheme中是否有任何方法可以读取列表中字符串的第一个字符并删除该元素?
我有一节课,比方说
public class GeneralClass<T> {
methodA() {...}
methodB() {...}
methodC() {...}
}
Run Code Online (Sandbox Code Playgroud)
而且我是从这个班级派生出来的
public class MoreSpecificClassString extends GeneralClass<String> {
methodD() {...}
methodE() {...}
methodF() {...}
}
public class MoreSpecificClassInt extends GeneralClass<Integer> {
methodX() {...}
methodY() {...}
methodZ() {...}
}
Run Code Online (Sandbox Code Playgroud)
现在,我想知道是否可以强制GeneralClass的子类只覆盖一个方法,例如methodA
?
谢谢
此查询返回错误"ambiguous column name courses.scheduleNumber".我搜索了问题的解决方案,但是,一个常见的修复方法是使用表名限定所有列名,我已经完成了.
SELECT
courses.scheduleNumber,
courses.subject,
courses.courseNumber,
courses.sectionNumber,
courses.credits,
courses.title,
courses.room,
courses.days,
rooms.building,
rooms.room,
courses.startTime,
courses.endTime,
courses.instructor
FROM courses
LEFT JOIN courseRooms
ON courses.scheduleNumber=courseRooms.scheduleNumber
LEFT JOIN courses
ON courseRooms.building=rooms.building AND courseRooms.room=rooms.room;
Run Code Online (Sandbox Code Playgroud) 我在Python中比较两个数组.
第一个数组是查询字符串中的单词列表.第二个数组是要从查询中排除的单词列表.
我必须比较这些数组并排除第一个数组中包含在第二个数组中的单词.
我试图通过比较第一个数组中的每个单词到整个第二个数组来解决这个问题,并继续直到第一个数组中的所有单词都用完为止:
for i in q_str:
if q_str[i] in stop_arr:
continue
else:
sans_arr[j] = q_arr[i]
j = j + 1
Run Code Online (Sandbox Code Playgroud)
q_str
查询数组在哪里,stop_arr
包含要排除的单词,sans_arr
是一个包含单词排除
的新数组.
此代码生成错误:
list indices必须是整数而不是str
我不明白这种行为.我有这样的例子,需要抓住html评论.
var str = '.. <!--My -- comment test--> ';
var regex1 = /<!--[.]*-->/g;
var regex2 = /<!--.*-->/g;
alert(str.match(regex1)); // null
alert(str.match(regex2)); // <!--My -- comment test-->
Run Code Online (Sandbox Code Playgroud)
第二个正则表达式regex2
正常,输出正是所需的.第一个节目null
.我不明白其中的区别.RegExpressions <!--[.]*-->
和<!--.*-->
意思相同 - " <!--
除了换行符之外的任何字符,从0开始到尽可能多,并以-->
" 完成".但对于第二个它是有效的,而第一个没有.为什么?
UPD.我已阅读评论并有更新.
var str3 = '.. <!--Mycommenttest--> ';
var str4 = '.. <!--My comment test--> ';
var regex3 = /<!--[\w]*-->/g;
var regex4 = /<!--[\s\S]*-->/g;
alert(str.match(regex3)); // <!--Mycommentstest-->
alert(str.match(regex4)); // <!-- My comment test -->
Run Code Online (Sandbox Code Playgroud)
所以可以使用有限的匹配变量来匹配任何东西.那么应该采用哪种方式正确使用RegExps?有[]
没有?无法得到差异,两者都给出正确的输出.
racket ×2
scheme ×2
sql ×2
brackets ×1
class ×1
clojure ×1
filtering ×1
generics ×1
haskell ×1
java ×1
javascript ×1
lisp ×1
list ×1
macros ×1
methods ×1
mysql ×1
operators ×1
overriding ×1
python ×1
quantifiers ×1
random ×1
regex ×1
regex-greedy ×1
sql-order-by ×1
sqlite ×1