Compare commits
5 Commits
e009604a9e
...
4f5017e3c1
Author | SHA1 | Date |
---|---|---|
Joshua Potter | 4f5017e3c1 | |
Joshua Potter | 52df11cd84 | |
Joshua Potter | 53171cc3d0 | |
Joshua Potter | 6520b19d40 | |
Joshua Potter | eca23f9927 |
|
@ -64,15 +64,28 @@
|
|||
"daily/2024-01-31.md": "72e343cef8d56e169cac7b360a88fcf0",
|
||||
"posix/index.md": "f7b1ae55f8f5e8f50f89738b1aca9111",
|
||||
"posix/signals.md": "2120ddd933fc0d57abb93c33f639afd8",
|
||||
"gawk.md": "4517acfbf4e186e8cc66a9002fbad73f",
|
||||
"gawk.md": "20ed75ec33b5e08933c81aac01eb64b5",
|
||||
"bash/index.md": "3b5296277f095acdf16655adcdf524af",
|
||||
"bash/shebang.md": "ad178efeb4a05190b80b5df108c175c7",
|
||||
"bash/robustness.md": "de97cd77aae047b5eea27440b43c9c42",
|
||||
"journal/2024-02-01.md": "f4cc061bfc8e41ce15ae9a354c65ffe9",
|
||||
"bash/shebang.md": "9006547710f9a079a3666169fbeda7aa",
|
||||
"bash/robustness.md": "a1d0d334939b54cca4bdfd2fd8ca27f0",
|
||||
"journal/2024-02-01.md": "3aa232387d2dc662384976fd116888eb",
|
||||
"journal/2024-01-31.md": "7c7fbfccabc316f9e676826bf8dfe970",
|
||||
"bash/quoting.md": "b1d8869a91001f8b22f0cdc54d806f61",
|
||||
"nix/callPackage.md": "5ef6bc5d1a549c55d43ebb4d48c64427",
|
||||
"nix/index.md": "dd5ddd19e95d9bdbe020c68974d77a33"
|
||||
"nix/callPackage.md": "59796c480e2856fa7491f62ceb7e3c9c",
|
||||
"nix/index.md": "dd5ddd19e95d9bdbe020c68974d77a33",
|
||||
"logic/propositional.md": "2e79b758dd161cc377f18cd1fa845285",
|
||||
"logic/index.md": "d41d8cd98f00b204e9800998ecf8427e",
|
||||
"journal/2024-02-03.md": "1359532c63e14251da04181fb0873d66",
|
||||
"bash/prompts.md": "61cb877e68da040a15b85af76b1f68ba",
|
||||
"algorithms/sorting/index.md": "3dea2ae728a19fa2d877711fa319ed87",
|
||||
"algorithms/sorting/insertion-sort.md": "c78c9983f87cdc4198f82803d418967f",
|
||||
"algorithms/index.md": "1583c07edea4736db27c38fe2b6c4c31",
|
||||
"c/escape-sequences.md": "07f0811b0fff14f54f78abc33f2e6606",
|
||||
"journal/2024-02-03.md": "0c5632b15b5f981bc3efe66c498f8add",
|
||||
"lua/index.md": "d41d8cd98f00b204e9800998ecf8427e",
|
||||
"c/index.md": "d41d8cd98f00b204e9800998ecf8427e",
|
||||
"gawk/variables.md": "4482c297e7f4f5987f42f1926a880ca7",
|
||||
"gawk/index.md": "0263448c8ae1ecfc0eacc4788f8402e9"
|
||||
},
|
||||
"fields_dict": {
|
||||
"Basic": [
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
title: Algorithms
|
||||
---
|
|
@ -0,0 +1,99 @@
|
|||
---
|
||||
title: Sorting
|
||||
TARGET DECK: Obsidian::STEM
|
||||
FILE TAGS: algorithm sorting
|
||||
tags:
|
||||
- algorithm
|
||||
- sorting
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Let $n \geq 0$. The **sorting problem** refers to permuting **records** $a_1, a_2, \ldots, a_n$ into a new sequence $\langle a_1', a_2', \ldots, a_n' \rangle$ such that $key(a_1') \leq key(a_2') \leq \cdots \leq key(a_n')$.
|
||||
|
||||
%%ANKI
|
||||
Cloze
|
||||
In the sorting problem, a "{record}" refers to {the entries being sorted}.
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706981319280-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Cloze
|
||||
In the sorting problem, a "{key}" refers to {the value records are sorted by}.
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706981319310-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Cloze
|
||||
In the sorting problem, "{satellite data}" refers to {the non-key values of records}.
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706981319317-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What term does Cormen et al. use to describe the record value used for sorting?
|
||||
Back: Keys.
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706981319324-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What makes a sorting algorithm stable?
|
||||
Back: "Equal" values are ordered the same in the output as they are in the input.
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706925787139-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What is an in place sorting algorithm?
|
||||
Back: One in which only a constant number of input values are ever stored outside the array.
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706925787146-->
|
||||
END%%
|
||||
|
||||
## Structural Comparison
|
||||
|
||||
The #Elixir documentation makes a point that there exist two types of comparisons between data types.[^structural] The first is **structural** in which comparisons are made on the underlying data structures used to describe the data types. The second is **semantic** which focuses on making the comparison with respect to what the data types represent.
|
||||
|
||||
```elixir
|
||||
iex> 1 < :atom # structural
|
||||
true
|
||||
iex> Date.compare(~D[2017-03-31], ~D[2017-04-01]) # semantic
|
||||
:lt
|
||||
```
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What are the two types of comparisons made between data types?
|
||||
Back: Structural and semantic.
|
||||
Reference: “Kernel — Elixir v1.16.1,” accessed February 2, 2024, [https://hexdocs.pm/elixir/1.16/Kernel.html#module-structural-comparison](https://hexdocs.pm/elixir/1.16/Kernel.html#module-structural-comparison).
|
||||
<!--ID: 1706913303147-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What is structural comparison of two data types?
|
||||
Back: Comparison of the underlying data structures making up data types.
|
||||
Reference: “Kernel — Elixir v1.16.1,” accessed February 2, 2024, [https://hexdocs.pm/elixir/1.16/Kernel.html#module-structural-comparison](https://hexdocs.pm/elixir/1.16/Kernel.html#module-structural-comparison).
|
||||
<!--ID: 1706913303155-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What is semantic comparison of two data types?
|
||||
Back: Comparison made with respect to what the data types represent.
|
||||
Reference: “Kernel — Elixir v1.16.1,” accessed February 2, 2024, [https://hexdocs.pm/elixir/1.16/Kernel.html#module-structural-comparison](https://hexdocs.pm/elixir/1.16/Kernel.html#module-structural-comparison).
|
||||
<!--ID: 1706913303160-->
|
||||
END%%
|
||||
|
||||
## References
|
||||
|
||||
* Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
* “Kernel — Elixir v1.16.1,” accessed February 2, 2024, [https://hexdocs.pm/elixir/1.16/Kernel.html#module-structural-comparison](https://hexdocs.pm/elixir/1.16/Kernel.html#module-structural-comparison).
|
||||
|
||||
[^structural]: [Structural Comparison](https://hexdocs.pm/elixir/1.16/Kernel.html#module-structural-comparison)
|
|
@ -0,0 +1,116 @@
|
|||
---
|
||||
title: Insertion Sort
|
||||
TARGET DECK: Obsidian::STEM
|
||||
FILE TAGS: algorithm sorting
|
||||
tags:
|
||||
- algorithm
|
||||
- sorting
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
| Property | Value |
|
||||
| ---------- | -------- |
|
||||
| Best Case | $O(n)$ |
|
||||
| Worst Case | $O(n^2)$ |
|
||||
| Avg. Case | $O(n^2)$ |
|
||||
| Memory | $O(1)$ |
|
||||
| In place | Yes |
|
||||
| Stable | Yes |
|
||||
|
||||
Insertion sort works by advancing an index `i` through an array `A[1..n]` such that `A[1..i]` is kept in sorted order.
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What is insertion sort's best case runtime?
|
||||
Back: $O(n)$
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706925879541-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What input value does insertion sort perform best on?
|
||||
Back: An already sorted array.
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706925921544-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What is insertion sort's worst case runtime?
|
||||
Back: $O(n^2)$
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706926586947-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What input value does insertion sort perform worst on?
|
||||
Back: An array in reverse-sorted order.
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706926586951-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Is insertion sort in place?
|
||||
Back: Yes
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706926586955-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Is insertion sort stable?
|
||||
Back: Yes
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706926586959-->
|
||||
END%%
|
||||
|
||||
```c
|
||||
void insertion_sort(const int n, int A[static n]) {
|
||||
for (int i = 1; i < n; ++i) {
|
||||
int key = A[i];
|
||||
int j = i - 1;
|
||||
for (; j >= 0 && A[j] > key; --j) {
|
||||
A[j + 1] = A[j];
|
||||
}
|
||||
A[j + 1] = key;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What loop invariant is maintained in insertion sort?
|
||||
Back: `A[1..i]` is in sorted order.
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706927594718-->
|
||||
END%%
|
||||
|
||||
## Analogy
|
||||
|
||||
Suppose you have a shuffled deck of playing cards face-down on a table. Start by grabbing a card from the deck with your left hand. For the remainder of the cards, use your right hand to transition the topmost card to the end of your left hand. If the newly placed card isn't in sorted order, move it one position closer to the start. Repeat until it's in sorted order.
|
||||
|
||||
If you repeat this process for every card in the deck, your left hand will eventually contain the entire deck in sorted order.
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What analogy does Cormen et al. use to explain insertion sort?
|
||||
Back: Sorting a shuffled deck of playing cards.
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706927594729-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What invariant does the left hand maintain in Cormen et al.'s insertion sort analogy?
|
||||
Back: It contains all drawn cards in sorted order.
|
||||
Reference: Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
||||
<!--ID: 1706927594732-->
|
||||
END%%
|
||||
|
||||
## References
|
||||
|
||||
* Thomas H. Cormen et al., _Introduction to Algorithms_, 3rd ed (Cambridge, Mass: MIT Press, 2009).
|
|
@ -0,0 +1,61 @@
|
|||
---
|
||||
title: Prompts
|
||||
TARGET DECK: Obsidian::STEM
|
||||
FILE TAGS: bash
|
||||
tags:
|
||||
- bash
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
According to Robbins a POSIX-compliant shell (like Bash) generally has the primary and secondary prompts denoted with `$` and `>` respectively. Adjust these values using environment variables `$PS1` and `PS2` respectively.
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What symbol is usually used to denote the primary prompt?
|
||||
Back: `$$`
|
||||
Reference: Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
||||
<!--ID: 1706882670149-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What environment variable controls Bash's primary prompt?
|
||||
Back: `$$PS1`
|
||||
Reference: Cooper, Mendel. “Advanced Bash-Scripting Guide,” n.d., 916.
|
||||
<!--ID: 1706973587222-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What symbol is usually used to denote the secondary prompt?
|
||||
Back: `>`
|
||||
Reference: Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
||||
<!--ID: 1706882670158-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What environment variable controls Bash's secondary prompt?
|
||||
Back: `$$PS2`
|
||||
Reference: Cooper, Mendel. “Advanced Bash-Scripting Guide,” n.d., 916.
|
||||
<!--ID: 1706973587232-->
|
||||
END%%
|
||||
|
||||
Paths supplied to commands are typically "sanitized" by prefixing the path name with `./`. This is mentioned in a few different places:
|
||||
|
||||
* `find -execdir` performs this prefixing automatically on all found files.
|
||||
* `awk` ambiguously interprets a file named e.g. `count=1` as variable assignment. Should write `$ awk -f program.awk ./count=1`.
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What methodology is commonly used to "sanitize" paths supplied as command-line arguments?
|
||||
Back: Prefixing the paths with `./`.
|
||||
Reference: Cooper, Mendel. “Advanced Bash-Scripting Guide,” n.d., 916.
|
||||
<!--ID: 1706885111460-->
|
||||
END%%
|
||||
|
||||
## References
|
||||
|
||||
* Cooper, Mendel. “Advanced Bash-Scripting Guide,” n.d., 916.
|
||||
* Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
|
@ -9,7 +9,7 @@ tags:
|
|||
|
||||
## Overview
|
||||
|
||||
An interesting point Robbins discusses in his introduction to [[gawk]] is this idea of command robustness. He states that:
|
||||
An interesting point Robbins discusses in his introduction to [[gawk/index|gawk]] is this idea of command robustness. He states that:
|
||||
|
||||
> A self-contained shell script is more reliable because there are no other files to misplace.
|
||||
|
||||
|
@ -56,6 +56,12 @@ It's interesting to think what else can be used as a measure of a command's robu
|
|||
* What happens if I run the command twice in a row?
|
||||
* Whether a program acts atomically
|
||||
* Is it possible intermediate files are left that affect subsequent runs?
|
||||
* The presence of timeouts
|
||||
* Perhaps a program waits a specified amount of time before input is available. The command's success is now externally determined.
|
||||
* Locale-aware functionality
|
||||
* Consider for instance [[gawk/index|gawk]]'s `\u` [[escape-sequences|sequence]] which targets characters in the current locale's character set as opposed to specifically Unicode.
|
||||
|
||||
The above scenarios are what makes something like [[nix/index|nix]] so compelling.
|
||||
|
||||
## References
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ tags:
|
|||
|
||||
## Overview
|
||||
|
||||
The shebang (also writting shabang or sha-bang) is a magic character at the start of a script indicating what command should be run when invoking the script directly. It always begins with ASCII characters `#!`.[^mendel]
|
||||
The shebang (also writting shabang or sha-bang) is a magic character at the start of a script indicating what command should be run when invoking the script directly. It always begins with ASCII characters `#!`.
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
|
|
|
@ -0,0 +1,148 @@
|
|||
---
|
||||
title: Escape Sequences
|
||||
TARGET DECK: Obsidian::STEM
|
||||
FILE TAGS: c
|
||||
tags:
|
||||
- c
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
C has a standard for processing different escape sequences. Many languages built with C in mind parse these escape sequences in a similar way.
|
||||
|
||||
* `\ooo`: Consists of one to three octal digits.
|
||||
* [[bash/index|Bash]] supports this sequence as `$'\ooo'`.
|
||||
* [[gawk/index|gawk]] supports this sequence directly.
|
||||
* [[lua/index|Lua]] does not support this kind of escape sequence. Instead, it has a *decimal* escape sequence `\ddd`.
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
How are C escape sequences for octal digits denoted?
|
||||
Back: As `\ooo`.
|
||||
Reference: Brian W. Kernighan and Dennis M. Ritchie, _The C Programming Language_, 2nd ed (Englewood Cliffs, N.J: Prentice Hall, 1988).
|
||||
<!--ID: 1706975891805-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
In C, `\ooo` allows specifying how many octal digits?
|
||||
Back: One to three.
|
||||
Reference: Brian W. Kernighan and Dennis M. Ritchie, _The C Programming Language_, 2nd ed (Englewood Cliffs, N.J: Prentice Hall, 1988).
|
||||
<!--ID: 1706975891810-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What alternative does Lua provide to C's `\ooo` sequence?
|
||||
Back: `\ddd`, a *decimal* escape sequence.
|
||||
Reference: Roberto Ierusalimschy, _Programming in Lua_, Fourth edition (Rio de Janeiro: Lua.org, 2016).
|
||||
Tags: lua
|
||||
<!--ID: 1706975891813-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
How are C escape sequences exposed in bash?
|
||||
Back: Using ANSI-C quoting, i.e. `$$'string'`.
|
||||
Reference: Mendel Cooper, “Advanced Bash-Scripting Guide,” n.d., 916.
|
||||
Tags: bash
|
||||
<!--ID: 1706975891817-->
|
||||
END%%
|
||||
|
||||
* `\xhh`: Consists of one or more hexadecimal digits. The `x` prefix is required to distinguish from octal escape sequences.
|
||||
* [[bash/index|Bash]] supports this sequence as `$'\xhh'`. One or two digits is supported.
|
||||
* [[gawk/index|gawk]] limits processing to two digits.
|
||||
* Robbins states that using more than two hexadecimal digits can produce undefined results.
|
||||
* [[Lua/index|Lua]] requires *exactly* two digits in its hex escape sequence.
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
How are C escape sequences for hexadecimal digits denoted?
|
||||
Back: As `\xhh`.
|
||||
Reference: Brian W. Kernighan and Dennis M. Ritchie, _The C Programming Language_, 2nd ed (Englewood Cliffs, N.J: Prentice Hall, 1988).
|
||||
<!--ID: 1706975891820-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
In C, `\x` allows specifying how many hexadecimal digits?
|
||||
Back: One or more.
|
||||
Reference: Brian W. Kernighan and Dennis M. Ritchie, _The C Programming Language_, 2nd ed (Englewood Cliffs, N.J: Prentice Hall, 1988).
|
||||
<!--ID: 1706975891824-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What footgun does C's `\x` sequence expose?
|
||||
Back: Using more than two hexadecimal digits can produce undefined results.
|
||||
Reference: Arnold D. Robbins, “GAWK: Effective AWK Programming,” October 2023, [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf).
|
||||
<!--ID: 1706975891828-->
|
||||
END%%
|
||||
|
||||
* `\uhhhh`: Introduced in C11 to represent Unicode code points. *Must* have exactly four hexadecimal characters specified with `0` leading padding if necessary.
|
||||
* [[bash/index|Bash]] supports this sequence as `$'uhhhh'`. One to four hex digits is supported.
|
||||
* [[gawk/index|gawk]] consolidates C's `\u` and `\U` sequence marker into just `\u`, capable of handling one to eight digits. Furthermore, `gawk` uses `\u` to designate the current locale's character set, *not* Unicode directly. Often times this is some Unicode-based locale though.
|
||||
* [[lua/index|Lua]] consolidates C's `\u` and `\U` sequence markers into `\u{h...h}`, capable of handling one or more hexadecimal digits. The curly braces are required.
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What two ways are C escape sequences for unicode denoted?
|
||||
Back: As `\uhhhh` or `\Uhhhhhhhh`.
|
||||
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
|
||||
Tags: unicode
|
||||
<!--ID: 1706975891832-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
In C, `\u` allows specifying how many hexadecimal digits?
|
||||
Back: Exactly four.
|
||||
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
|
||||
Tags: unicode
|
||||
<!--ID: 1706975891835-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
In what standard were C's `\u` and `\U` escape sequences introduced?
|
||||
Back: C11.
|
||||
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
|
||||
Tags: unicode
|
||||
<!--ID: 1706975891839-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Cloze
|
||||
`\u` in C designates a character in {Unicode}. In `gawk` it designates a character in {the current locale's character set}.
|
||||
Reference: Arnold D. Robbins, “GAWK: Effective AWK Programming,” October 2023, [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf).
|
||||
Tags: unicode gawk
|
||||
<!--ID: 1706976541399-->
|
||||
END%%
|
||||
|
||||
* `\Uhhhhhhhh`: Introduced in C11 to represent larger unicode code points. *Must* have exactly eight hexadecimal characters specified with `0` leading padding if necessary.
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
In C, `\U` allows specifying how many hexadecimal digits?
|
||||
Back: Exactly eight.
|
||||
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
|
||||
Tags: unicode
|
||||
<!--ID: 1706975891843-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Why does C have both `\u` and `\U`?
|
||||
Back: `\U` accommodates for larger code point values.
|
||||
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
|
||||
Tags: unicode
|
||||
<!--ID: 1706976705750-->
|
||||
END%%
|
||||
|
||||
## References
|
||||
|
||||
* Arnold D. Robbins, “GAWK: Effective AWK Programming,” October 2023, [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf).
|
||||
* Brian W. Kernighan and Dennis M. Ritchie, _The C Programming Language_, 2nd ed (Englewood Cliffs, N.J: Prentice Hall, 1988).
|
||||
* Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
|
||||
* Mendel Cooper, “Advanced Bash-Scripting Guide,” n.d., 916.
|
||||
* Roberto Ierusalimschy, _Programming in Lua_, Fourth edition (Rio de Janeiro: Lua.org, 2016).
|
|
@ -3,8 +3,6 @@ title: GAWK
|
|||
TARGET DECK: Obsidian::STEM
|
||||
FILE TAGS: linux::cli gawk
|
||||
tags:
|
||||
- linux
|
||||
- cli
|
||||
- gawk
|
||||
---
|
||||
|
||||
|
@ -40,7 +38,7 @@ END%%
|
|||
|
||||
Robbins suggests executing command `set +H` on [[bash]] startup to disable [[C]] shell-style command history.
|
||||
|
||||
## Usage
|
||||
## Structure
|
||||
|
||||
`awk` applies actions to lines matching specified patterns. In this way `awk` is said to be data-driven - we specify the lines `awk` should act on and `awk` is responsible for finding and acting on them. Instructions are provided via a **program**.
|
||||
|
||||
|
@ -88,7 +86,7 @@ Basic
|
|||
Write the `awk` command that searches file `mail-list` for string `li`.
|
||||
Back:
|
||||
```bash
|
||||
$ awk '/li/ { print }' mail-list
|
||||
$ awk '/li/' mail-list
|
||||
```
|
||||
Reference: Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
||||
<!--ID: 1706819150999-->
|
||||
|
@ -141,7 +139,7 @@ END%%
|
|||
|
||||
%%ANKI
|
||||
Basic
|
||||
What is the `BEGIN` pattern?
|
||||
How is the `BEGIN` pattern interpreted?
|
||||
Back: Code associated with it executes before any input is read.
|
||||
Reference: Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
||||
<!--ID: 1706823790236-->
|
||||
|
@ -149,7 +147,7 @@ END%%
|
|||
|
||||
%%ANKI
|
||||
Basic
|
||||
What is the `END` pattern?
|
||||
How is the `END` pattern interpreted?
|
||||
Back: Code associated with it executes after all input has been read.
|
||||
Reference: Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
||||
<!--ID: 1706823790239-->
|
||||
|
@ -188,6 +186,22 @@ Reference: Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 202
|
|||
<!--ID: 1706824091128-->
|
||||
END%%
|
||||
|
||||
`awk` is said to be a "line-oriented" language. Every rule's action must begin on the same line as the pattern.
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
When can a rule's pattern and action exist on different lines?
|
||||
Back: Only when using backslash continuation.
|
||||
Reference: Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
||||
<!--ID: 1706883732944-->
|
||||
END%%
|
||||
|
||||
## Exit Status
|
||||
|
||||
On success, `gawk` exits with status code `EXIT_SUCCESS`. On failure, with status code `EXIT_FAILURE`. On fatal error, `gawk` exists with status code `2`. #c
|
||||
|
||||
You can specify a custom exit status by using the `exit` statement from within the `awk` program.
|
||||
|
||||
## References
|
||||
|
||||
* Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
|
@ -0,0 +1,53 @@
|
|||
---
|
||||
title: GAWK
|
||||
TARGET DECK: Obsidian::STEM
|
||||
FILE TAGS: linux::cli gawk
|
||||
tags:
|
||||
- gawk
|
||||
---
|
||||
|
||||
## Variables
|
||||
|
||||
Variables are defined like `var=val`. They can be specified in two different places:
|
||||
|
||||
1. Via the `-v` command line flag. Using this allows accessing the variable value from within a `BEGIN` rule.
|
||||
2. In the file list. Using this allows accessing the variable value in all subsequent file processing.
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Where in an `awk` invocation can variables be assigned?
|
||||
Back: As a `-v` argument or in the file list.
|
||||
Reference: Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
||||
<!--ID: 1706885111450-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
The `-v` flag was introduced to accommodate what functionality?
|
||||
Back: Accessing variables from a `BEGIN` rule.
|
||||
Reference: Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
||||
<!--ID: 1706885111454-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Describe what the following command does in in a single sentence:
|
||||
```bash
|
||||
$ awk 'program' pass=1 data pass=2 data
|
||||
```
|
||||
Back: Evaluates `'program'` against the `data` file twice with a different value of `pass` on each run.
|
||||
Reference: Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
||||
<!--ID: 1706885111457-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
How is `stdin` specified in `awk`'s file list?
|
||||
Back: `-`
|
||||
Reference: Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
||||
<!--ID: 1706973587236-->
|
||||
END%%
|
||||
|
||||
## References
|
||||
|
||||
* Robbins, Arnold D. “GAWK: Effective AWK Programming,” October 2023. [https://www.gnu.org/software/gawk/manual/gawk.pdf](https://www.gnu.org/software/gawk/manual/gawk.pdf)
|
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
title: "2024-02-02"
|
||||
---
|
||||
|
||||
- [x] Anki Flashcards
|
||||
- [x] KoL
|
||||
- [x] Sheet Music (10 min.)
|
||||
- [x] OGS (1 Life & Death Problem)
|
||||
- [x] Korean (Read 1 Story)
|
||||
- [x] Interview Prep (1 Practice Problem)
|
||||
- [ ] Log Work Hours (Max 3 hours)
|
||||
|
||||
* Read 효자 호랑이 (The Filial Tiger).
|
||||
* Read through [Project #1 - Buffer Pool](https://15445.courses.cs.cmu.edu/fall2022/project1/) in anticipation of my call with Kevin later.
|
||||
* Call was pushed back to next week.
|
||||
* Upgraded to Zotero 7. It's a beta version but already has some nice quality of life improvements I want to take advantage of.
|
||||
* Dark mode.
|
||||
* Ability to comment on snapshots.
|
||||
* Answered [String to Integer (atoi)](https://leetcode.com/problems/string-to-integer-atoi/description/). Admittedly though I floundered around. I should try and think more critically at each step instead of getting impatient like I did.
|
||||
* More reading on `awk`. This time around variables.
|
||||
* Begin deep dive into insertion sort. Starting off with the basics, but want to think much more broadly on the role of insertion sort throughout computing.
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
title: "2024-02-03"
|
||||
---
|
||||
|
||||
- [x] Anki Flashcards
|
||||
- [x] KoL
|
||||
- [x] Sheet Music (10 min.)
|
||||
- [ ] OGS (1 Life & Death Problem)
|
||||
- [x] Korean (Read 1 Story)
|
||||
- [ ] Interview Prep (1 Practice Problem)
|
||||
- [ ] Log Work Hours (Max 3 hours)
|
||||
|
||||
* Spent time consolidating how different escape sequences behave across languages (`awk`, Bash, C, and Lua).
|
||||
* Read 호랑이와 곶감 (The Tiger and the Dried Persimmon).
|
||||
* Started practicing "One Summer's Day" by Joe Hisaishi, arranged by Torbjørn Brandrud.
|
|
@ -0,0 +1,307 @@
|
|||
---
|
||||
title: Propositional Logic
|
||||
TARGET DECK: Obsidian::STEM
|
||||
FILE TAGS: logic::0-order
|
||||
tags:
|
||||
- logic
|
||||
- 0-order
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Propositional logic (or `0`-order logic) refers to the manipulation of **propositions** using the following five logical operators: $\neg$, $\land$, $\lor$, $\Rightarrow$, $\Leftrightarrow$.
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Who is the author of "The Science of Programming"?
|
||||
Back: David Gries
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861286-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What are the constant propositions?
|
||||
Back: $T$ and $F$
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861289-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What are the five propositional logical operators?
|
||||
Back: $\neg$, $\land$, $\lor$, $\Rightarrow$, and $\Leftrightarrow$
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861291-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Cloze
|
||||
Gries replaces logical operator {$\Leftrightarrow$} in favor of {$=$}.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861295-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
How does Lean define propositional equality?
|
||||
Back: Expressions `a` and `b` are propositionally equal iff `a = b` is true.
|
||||
Reference: Avigad, Jeremy. ‘Theorem Proving in Lean’, n.d.
|
||||
Tags: lean
|
||||
<!--ID: 1706994861298-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
How does Lean define `propext`?
|
||||
Back:
|
||||
```lean
|
||||
axiom propext {a b : Prop} : (a ↔ b) → (a = b)
|
||||
```
|
||||
Reference: Avigad, Jeremy. ‘Theorem Proving in Lean’, n.d.
|
||||
Tags: lean
|
||||
<!--ID: 1706994861300-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What Lean theorem justifies Gries choice of $=$ over $\Leftrightarrow$?
|
||||
Back: `propext`
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
Tags: lean
|
||||
<!--ID: 1706994861302-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What name is given to $\land$ operands?
|
||||
Back: Conjuncts
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861304-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What name is given to $\lor$ operands?
|
||||
Back: Disjuncts
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861306-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What name is given to operand $a$ in $a \Rightarrow b$?
|
||||
Back: The antecedent
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861308-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What name is given to operand $b$ in $a \Rightarrow b$?
|
||||
Back: The consequent
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861310-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What does the evaluation model of propositional logic refer to?
|
||||
Back: An interpretation of propositional logic that associates values to identifiers.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861312-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Evaluation model. What is a state?
|
||||
Back: A function mapping identifiers to values.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861314-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What is necessary to determine if a proposition is well-defined?
|
||||
Back: A state to evaluate against.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861316-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Is $(b \land c)$ well-defined in $\{(b, T), (c, F)\}$?
|
||||
Back: Yes
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861318-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Is $(b \lor d)$ well-defined in $\{(b, T), (c, F)\}$?
|
||||
Back: No
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861320-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Evaluation model. What does it mean for a proposition to be a tautology?
|
||||
Back: A proposition is true in every state it is well-defined in.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861323-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What C operator corresponds to $\neg$?
|
||||
Back: `!`
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
Tags: c
|
||||
<!--ID: 1706994861325-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What C operator corresponds to $\land$?
|
||||
Back: There isn't one.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
Tags: c
|
||||
<!--ID: 1706994861327-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What C operator corresponds to $\lor$?
|
||||
Back: There isn't one.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
Tags: c
|
||||
<!--ID: 1706994861329-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What C operator corresponds to $\Rightarrow$?
|
||||
Back: There isn't one.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
Tags: c
|
||||
<!--ID: 1706994861331-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What C operator corresponds to $\Leftrightarrow$?
|
||||
Back: `=`
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
Tags: c
|
||||
<!--ID: 1706994861333-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Evaluation model. What does a proposition *represent*?
|
||||
Back: The set of states in which it is true.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861335-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Evaluation model. What proposition represents states $\{(b, T)\}$ and $\{(c, F)\}$?
|
||||
Back: $b \lor \neg c$
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861337-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Evaluation model. What set of states does $a \land b$ represent?
|
||||
Back: The set containing just state $\{(a, T), (b, T)\}$.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861339-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Evaluation model. What is sloppy about phrase "the states in $b \lor \neg c$"?
|
||||
Back: $b \lor \neg c$ is not a set.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861341-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
When is $p$ stronger than $q$?
|
||||
Back: When $p \Rightarrow q$.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861343-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
When is $p$ weaker than $q$?
|
||||
Back: When $q \Rightarrow p$.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861346-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What is the weakest proposition?
|
||||
Back: $T$
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861348-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What set of states does $T$ represent?
|
||||
Back: The set of all states.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861350-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What is the strongest proposition?
|
||||
Back: $F$
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861352-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
What set of states does $F$ represent?
|
||||
Back: The set of no states.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861354-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
Evaluation model. Why is $b \land c$ stronger than $b \lor c$?
|
||||
Back: The former represents a subset of the states the latter represents.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861356-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
How is $\Rightarrow$ written in terms of other logical operators?
|
||||
Back: $p \Rightarrow q$ is equivalent to $\neg p \lor q$.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861358-->
|
||||
END%%
|
||||
|
||||
%%ANKI
|
||||
Basic
|
||||
How is $\Leftrightarrow$ written in terms of other logical operators?
|
||||
Back: $p \Leftrightarrow q$ is equivalent to $(p \Rightarrow q) \land (q \Rightarrow p)$.
|
||||
Reference: Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
||||
<!--ID: 1706994861360-->
|
||||
END%%
|
||||
|
||||
## References
|
||||
|
||||
* Avigad, Jeremy. ‘Theorem Proving in Lean’, n.d.
|
||||
* Gries, David. _The Science of Programming_. Texts and Monographs in Computer Science. New York: Springer-Verlag, 1981.
|
|
@ -90,7 +90,7 @@ callPackage = callPackageWith pkgs;
|
|||
%%ANKI
|
||||
Basic
|
||||
What two functions is `callPackage` implemented on top of?
|
||||
Back: `callPackageWith` and `lib.makeOverridable`.
|
||||
Back: `callPackageWith` and `makeOverridable`.
|
||||
Reference: Yin, Ryan. “NixOS and Flakes Book.” Nix, February 1, 2024. [https://github.com/ryan4yin/nixos-and-flakes-book](https://github.com/ryan4yin/nixos-and-flakes-book)
|
||||
<!--ID: 1706828138592-->
|
||||
END%%
|
||||
|
@ -98,7 +98,7 @@ END%%
|
|||
%%ANKI
|
||||
Basic
|
||||
What is the purpose of `callPackage`?
|
||||
Back: It calls package functions with arguments automatic supplied if not overridden.
|
||||
Back: It calls package functions with arguments automatically supplied if not overridden.
|
||||
Reference: Yin, Ryan. “NixOS and Flakes Book.” Nix, February 1, 2024. [https://github.com/ryan4yin/nixos-and-flakes-book](https://github.com/ryan4yin/nixos-and-flakes-book)
|
||||
<!--ID: 1706828138594-->
|
||||
END%%
|
||||
|
|
Loading…
Reference in New Issue