ForNext
Only Do What Only You Can Do
F#, Scala, Haskell
はじめに
- 001. show version
- 002. interpreter
- 003. shebang
- 004. bytecode compiler and interpreter
- 005. native compiler
- 006. library which is always imported
- 007. statement terminator
- 008. blocks
- 009. single line comment
- 010. multi-line comment
- 011. hello world
- 012. value
- 013. variable
- 014. unit
- 015. conditional expression
- 016. branch type mismatch
- 017. null
- 018. type declaration
arithmetic and logic
- 019. true and false
- 020. boolean type
- 021. logical operators
- 022. relational operators
- 023. numeric types
- 024. integer operators
- 025. integer exponentiation
- 026. largest integer
- 027. integer overflow
- 028. integer division by zero
- 029. integer division, remainder, float division
- 030. negative integer literal
- 031. float operators
- 032. float exponentiation
- 033. float functions
- 034. add integer and float
- 035. arithmetic truncation
- 036. min and max
- 037. float overflow
- 038. float division by zero
- 039. sqrt -2
- 040. random integer, random float, normal float
- 041. bit operators
strings
- 042. literal
- 043. string and char types
- 044. string escapes
- 045. concatenation
- 046. length
- 047. index of substring
- 048. extract substring
- 049. number to string
- 050. string to number
- 051. case manipulation
- 052. character access
- 053. character literal
- 054. chr and ord
lists and tuples
- 055. list literal
- 056. list element access
- 057. list head
- 058. list tail
- 059. cons
- 060. reverse
- 061. sort
- 062. append
- 063. concatenate list of lists
- 064. length
- 065. each
- 066. map
- 067. filter
- 068. fold left
- 069. fold right
- 070. tuple
- 071. tuple element access
- 072. pair element access
data types
- 073. algebraic sum type
- 074. algebraic product type
- 075. algebraic product literal
- 076. type synonym
- 077. type constructor with argument
- 078. type constructor with tuple argument
- 079. parametric type constructor
- 080. recursive type
- 081. match/with case/of
- 082. match guard
- 083. match catchall
- 084. null type
functions and scope
- 085. let
- 086. where
- 087. function
- 088. lambda
- 089. piecewise defined function
- 090. recursive function
- 091. mutually-recursive-functions
- 092. named parameter
- 093. named parameter default value
- 094. infix operator in prefix position
- 095. function in infix position
- 096. currying
- 097. composition
- 098. function composition operator
- 099. lazy evaluation
- 100. strict evaluation
execution control
- 101. if
- 102. if else-if else
- 103. sequencing
- 104. while
- 105. for
- 106. for in reverse
- 107. list iteration
- 108. loop
- 109. raise error
- 110. handle error
- 111. type of exceptions
- 112. user defined exception
- 113. standard exceptions
- 114. assert
environment and i/o
modules
- 118. module example
- 119. namespaces
- 120. file name restrictions
- 121. import
- 122. module creation
- 123. module alias
- 124. module separator
- 125. submodule
- 126. inspect module