⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 list-xprod.sml

📁 这是我们参加06年全国开源软件的竞赛作品
💻 SML
字号:
(* list-xprod.sml * * COPYRIGHT (c) 1993 by AT&T Bell Laboratories.  See COPYRIGHT file for details. * * Functions for computing with the cross product of two lists. *)structure ListXProd : LIST_XPROD =  struct  (* apply a function to the cross product of two lists *)    fun appX f (l1, l2) = let	  fun lp1 [] = ()	    | lp1 (x::r) = let		fun lp2 [] = lp1 r		  | lp2 (y::r) = (f(x, y); lp2 r)		in		  lp2 l2		end	  in	    lp1 l1	  end  (* map a function across the cross product of two lists *)    fun mapX f (l1, l2) = let	  fun lp1 ([], resL) = rev resL	    | lp1 (x::r, resL) = let		fun lp2 ([], resL) = lp1 (r, resL)		  | lp2 (y::r, resL) = lp2 (r, f(x, y) :: resL)		in		  lp2 (l2, resL)		end	  in	    lp1 (l1, [])	  end  (* fold a function across the cross product of two lists *)    fun foldX f (l1, l2) = let	  fun lp1 ([], accum) = accum	    | lp1 (x::r, accum) = let		fun lp2 ([], accum) = lp1 (r, accum)		  | lp2 (y::r, accum) = lp2 (r, f(x, y, accum))		in		  lp2 (l2, accum)		end	  in	    fn init => lp1 (l1, init)	  end  end; (* ListXProd *)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -