Cornell cs3110 - Chapter4 Exercises

news/2024/10/2 22:21:58
(* Exercise: mystery operator 1 *)
let ( $ ) f x = f x;;
(* 使得函数的连续调用具有一部分右结合的特质 square $ 2 + 2 与 square 2 + 2 的运行结果分别是 16 和 6 *)(* Exercise: repeat *)
let rec repeat f n x = match n with| 0 -> x| _ -> repeat f (n - 1) (f x);;(* Exercise: product *)
let product = function | [] -> 1| h :: t -> List.fold_left ( * ) h t;;(* Exercise: terse product *)
let terse_product = List.fold_left ( * ) 1;; (* Orz 我宣布 Ocaml 是世界上最美的语言 *)(* Exercise: sum_cube_odd *)
let rec ( -- ) i j = if i > j then [] else i :: (i + 1 -- j);;let odd x = if x mod 2 = 1 then true else false;;let cube x = x * x * x;;let sum = List.fold_left ( + ) 0;;let sum_cube_add n = sum @@ List.map cube @@ List.filter odd @@ ( -- ) 0 n;;(* Exercise: sum_cube_odd pipeline *)
let sum_cube_odd_pipe n = ( -- ) 0 n |> List.filter odd |> List.map cube |> List.fold_left ( + ) 0;;(* Exercise: exists *)
let rec exists_rec f = function| [] -> false| h :: t -> if f h then true else (exists_rec f t);;let exists_fold f = List.fold_left (fun x y -> x || f y) false;;let exists_libs f l = List.fold_left ( || ) false @@ List.map f l;;(* Exercise: library uncarried *)
let uncarried_append (l1, l2) = List.append l1 l2;;(* Exercise: map composition *)
let map_composition = fun f g l -> List.map (fun x -> f (g x)) l;; (* f @@ g 好像无法通过类型推断 solution 应该是错了 具体解释等我学完解释器 :) *)let map_composition_test = map_composition (fun x -> x + 1) (fun x -> x * x) [1; 2; 3; 4; 5];;(* Exercise: more list fun *)
let greater_then_3 = List.filter (fun x -> x > 3);;let add_1 = List.map (fun x -> x +. 1.0);;let gather_sentence strs sep = List.fold_left (fun x y -> if x = "" then y else x ^ sep ^ y) "" strs;;(* Exercise: association list keys *)
let keys : ('a * 'b) list -> 'a list = fun lst -> List.map (fun (x, y) -> x) lst |> List.sort_uniq compare;;(* Exercise: valid matrix *)
let is_valid_matrix = function | [] -> false | m -> List.map List.length m |> List.sort_uniq compare |> List.length = 1;;(* Exercise: row vector add *)
let add_row_vectors v1 v2 = List.map2 ( + ) v1 v2;;(* Exercise: matrix add *)
let add_matrices m1 m2 = List.map2 add_row_vectors m1 m2;;(* Exercise: matrix multiply *)
let transpose m = List.map (fun i -> List.map (fun x -> List.nth x i) m) (0 -- (List.length (List.hd m) - 1));;let mul_row_vectors v1 v2 = List.fold_left ( + ) 0 @@ List.map2 ( * ) v1 v2;;let multiply_matrices m1 m2 = List.map (fun x -> List.map (fun y -> mul_row_vectors x y) (transpose m2)) m1;;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/67218.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

29. GIL全局解释器锁、信号量、线程池进程池

1. GIL全局解释器锁1.1 概念 In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiplenative threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (How…

[操作系统]进程同步

临界区 互斥量 信号量 事件

05-论说文:审题与立意(2)

争论性材料 描述性材料 审题最难的 有个三段论!! 人工智能的作用 有好有坏 技术变革是中项 三段论 、 这怎么写? 经济联考: 蚂蚁 ==》资源 可持续发展 题干明确 ==》给啥说啥 题干不明确,典故、实验、自然现象==》社会、企业管理 见人…

本文来自博客园,作者:雨中秋,转载请注明原文链接:https://www.cnblogs.com/zengzi/p/18445105,不然会AFO

navicat

一、概述 在现代软件开发和数据管理中,数据库的管理与维护至关重要。无论您是一个开发者、数据分析师,还是数据库管理员,使用一款强大的数据库管理工具能大大提高工作效率。Navicat 就是这样一款备受欢迎的数据库管理工具,支持多种数据库系统,如 MySQL、PostgreSQL、SQLit…

记一次虚拟机无法 ping 通百度的解决方法

先运行ip a查看网卡: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 sc…

Apache POI 创建 Excel

数据来自 通义千问🎈依赖包 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version> </dependency> v5.2.2。创建Excel xlsx 格式。简单版 创建一个包含数据的 Excel 文…