@Razetime Looks like I overlooked take and drop (and drop-while, for that matter). :(
If you're loading the library, you can define take this way, which is more robust and also slightly golfier when golfed down:
(def take
(lambda (ls n)
(head (transpose (zip ls (1to n))))))
@Razetime I could've sworn I remembered implementing SKI in tinylisp before. Turns out I was remembering thiscode-challenge. Not sure how well my answer there will translate to code-golf, but it could be a good starting point.
If a function isn't recursive, you can submit it as an anonymous function and save the four bytes from (d f. You'll still need the (d f for the TIO, but you don't have to count it as part of your code.
To avoid naming conflicts, I usually use uppercase letters as my parameters and (if necessary) function names in golf submissions: (d F(q((A B)(a A B)))) for example.